Tag: C#的

C ++删除 – 它删除我的对象,但我仍然可以访问数据?

我已经写了一个简单的,工作的俄罗斯方块游戏与每个块作为一个类的单个块的一个实例。 class SingleBlock { public: SingleBlock(int, int); ~SingleBlock(); int x; int y; SingleBlock *next; }; class MultiBlock { public: MultiBlock(int, int); SingleBlock *c, *d, *e, *f; }; SingleBlock::SingleBlock(int a, int b) { x = a; y = b; } SingleBlock::~SingleBlock() { x = 222; } MultiBlock::MultiBlock(int a, int b) { c = new SingleBlock (a,b); […]

什么是保存游戏状态的最佳方式?

我find了在Unity3D游戏引擎中保存游戏数据的最佳方法。 首先,我使用BinaryFormatter序列化对象。 但是我听说这个方法有一些问题,不适合保存。 那么,保存游戏状态的最佳方式或推荐方法是什么? 在我的情况下,保存格式必须是字节数组。

函数参数中数组的长度

这是用C来计算数组长度的众所周知的代码: sizeof(array)/sizeof(type) 但我似乎无法find作为parameter passing给函数的数组的长度: #include <stdio.h> int length(const char* array[]) { return sizeof(array)/sizeof(char*); } int main() { const char* friends[] = { "John", "Jack", "Jim" }; printf("%d %d", sizeof(friends)/sizeof(char*), length(friends)); // 3 1 } 我假设数组被复制到函数参数的值作为常量指针和引用它应该解决这个问题,但是这个声明是无效的: int length(const char**& array); 我发现传递数组长度作为第二个参数是冗余信息,但为什么这样的main标准声明: int main(int argc, char** argv); 请说明函数参数中是否可以找出数组的长度,如果是这样,为什么在main有冗余。

std :: cin用空格input?

#include <string> string input; cin >> input; 用户想要input“Hello World”。 但是在这两个词之间的空间里, cin失败了。 我怎样才能让整个Hello World cin ? 我实际上是用structs和cin.getline做这个似乎不工作。 这是我的代码: struct cd { string CDTitle[50]; string Artist[50]; int number_of_songs[50]; }; cin.getline(library.number_of_songs[libNumber], 250); 这产生了一个错误。 有任何想法吗?

const引用是否延长了临时的生命?

为什么这样做: #include <string> #include <iostream> using namespace std; class Sandbox { public: Sandbox(const string& n) : member(n) {} const string& member; }; int main() { Sandbox sandbox(string("four")); cout << "The answer is: " << sandbox.member << endl; return 0; } 给出输出: 答案是: 代替: 答案是:四

什么是WCF客户端`使用`块问题的最佳解决方法?

我喜欢在using块中实例化我的WCF服务客户端,因为它几乎是使用实现IDisposable资源的标准方式: using (var client = new SomeWCFServiceClient()) { //Do something with the client } 但是,正如在这篇MSDN文章中指出的那样,将WCF客户端封装在using块中可能会掩盖导致客户端处于故障状态(如超时或通信问题)的任何错误。 长话短说,在调用Dispose()时,客户端的Close()方法会触发,但会因为处于故障状态而引发错误。 原来的exception然后被第二个exception所掩盖。 不好。 MSDN文章中build议的解决方法是完全避免使用using块,而是实例化客户端并使用它们: try { … client.Close(); } catch (CommunicationException e) { … client.Abort(); } catch (TimeoutException e) { … client.Abort(); } catch (Exception e) { … client.Abort(); throw; } 相比于using块,我认为这是丑陋的。 每当你需要一个客户端时,需要写很多代码。 幸运的是,我发现了一些其他的解决方法,比如IServiceOriented上的这个。 你从以下开始: public delegate void UseServiceDelegate<T>(T proxy); […]

C#方差问题:分配List <Derived>作为List <Base>

看下面的例子(部分来自MSDN博客 ): class Animal { } class Giraffe : Animal { } static void Main(string[] args) { // Array assignment works, but… Animal[] animals = new Giraffe[10]; // implicit… List<Animal> animalsList = new List<Giraffe>(); // …and explicit casting fails List<Animal> animalsList2 = (List<Animal>) new List<Giraffe>(); } 这是一个协变问题吗? 这将在未来的C#版本中得到支持,是否有任何聪明的解决方法(只使用.NET 2.0)?

等待vs Task.Wait – 死锁?

我不太了解Task.Wait和await之间的区别。 我有一些类似于ASP.NET WebAPI服务中的以下function: public class TestController : ApiController { public static async Task<string> Foo() { await Task.Delay(1).ConfigureAwait(false); return ""; } public async static Task<string> Bar() { return await Foo(); } public async static Task<string> Ros() { return await Bar(); } // GET api/test public IEnumerable<string> Get() { Task.WaitAll(Enumerable.Range(0, 10).Select(x => Ros()).ToArray()); return new string[] { […]

如何将string转换为Int?

我有 TextBoxD1.Text 我想把它转换成'int'来存储在数据库中。 我该怎么做?

C#3.0+中属性和字段的区别

我意识到这似乎是C#中的字段和属性之间有什么区别的重复? 但是我的问题有一点点差别(从我的观点来看): 一旦我知道了 我不会使用我的课程“只能在属性上工作的技巧” 我不会在getter / setter中使用validation码。 有没有什么区别(风格/未来发展的除外),如设置属性的某种types的控制? 是否有任何其他区别: public string MyString { get; set; } 和 public string myString; (我知道,第一个版本需要C#3.0或更高版本,并且编译器确实创build了私有字段。)