Tag:

转到实现的方法而不是接口

通常在浏览代码时,我会遇到这样的事情: public class Fruity { private IOrange _Orange; public Fruity() { _Orange = new Orange() as IOrange; } public void PrepareFruit() { return _Orange.Peel(); } } 太好了,所以现在我想看看Peel方法是如何实现的。 右键单击该方法会给我Go To Definition,它将我带到界面存根。 好的,严格来说,定义是由接口归因的,因为私有变量是以这种方式定义的,但有没有办法去实现? 当然,查找所有引用都是调用,接口和具体化的分散方法。 但在这种情况下,实现的来源是显而易见的,所以我应该能够跳到它我想到的… 显然,有时可能存在歧义,这里描述得很好: 转到具体类型的定义 但可以肯定的是,当实现非常明确时,应该有一个Go To Implementation选项。

C#Help:在C#中对对象列表进行排序

可能重复: 使用预定义的排序值列表对对象排序 C#Help:在C#中对对象列表进行排序 双重post 在C#中对对象列表进行排序 public class CarSpecs { public CarSpecs() { } private String _CarName; public String CarName { get { return _CarName; } set { _CarName = value; } } private String _CarMaker; public String CarMaker { get { return _CarMaker;} set { _CarMaker = value; } } private DateTime _CreationDate; public DateTime […]

C#:封装例如集合

我想知道哪一个被认为是最干净或最好用的,为什么。 其中一个公开了一个乘客列表,让用户添加和删除等。另一个隐藏列表,只让用户枚举它们并使用特殊方法添加。 例1 class Bus { public IEnumerable Passengers { get { return passengers; } } private List passengers; public Bus() { passengers = new List(); } public void AddPassenger(Passenger passenger) { passengers.Add(passenger); } } var bus = new Bus1(); bus.AddPassenger(new Passenger()); foreach(var passenger in bus.Passengers) Console.WriteLine(passenger); 例2 class Bus { public List Passengers { […]

创建公用事业类?

我是OOP的新手,我正在尽最大努力保持严格基于类的东西,同时使用良好的编码原则。 我现在是一个很好的方式进入我的项目,我有很多一般使用方法,我想放入实用程序类。 有没有最好的方法来创建实用程序类? public class Utilities { int test; public Utilities() { } public int sum(int number1, int number2) { test = number1 + number2; } return test; } 创建此Utilities类后,我是否只创建一个Utilities对象,并运行我选择的方法? 我有这个公用事业课程的想法是否正确?

可变结构与类?

我不确定是使用可变结构还是可变类。 我的程序存储了一个包含大量对象的数组。 我注意到使用类会使所需的内存量翻倍。 但是,我希望对象是可变的,并且我被告知使用可变结构是邪恶的。 这就是我的类型: struct /* or class */ Block { public byte ID; public bool HasMetaData; // not sure whether HasMetaData == false or // MetaData == null is faster, might remove this public BlockMetaData MetaData; // BlockMetaData is always a class reference } 像这样分配大量的对象(注意下面的两个代码都运行了81次): // struct Block[,,] blocks = new Block[16, 256, […]

类VS ref Struct

我正在使用C#编写游戏,因此,我非常关注性能。 我想知道主要区别是什么,如果可能的话,使用Class传递数据或通过引用传递的struct的性能考虑因素。 出于性能原因,我希望不要复制数据(我假设通过ref传递比这里的值快得多)。 我知道一个类总是通过引用传递,并且结构是通过值传递的,但我在谈论通过引用传递结构。 我希望传递的数据示例: public delegate void PathCompleteDelegate(List path); public struct PathFinderJob{ public PathCompleteDelegate callback; public Vector3 start, end; public PathSize unitSize; public BoxCollider boxCollider; } 在前面的例子中,使用类会有所作为吗? 如果是这样,差异会是什么? 在这个例子中,一个类是否比结构更快? 为什么? 谢谢。 若昂卡洛斯

计算类的实例

可能重复: 我怎样才能知道在C#中创建了多少个对象? 是否有可能获得所选类的活动(已创建但尚未销毁)的实例数? 例如 public class MyClass { } c1 = new MyClass(); c2 = new MyClass(); count = GetActiveInstances(typeof(MyClass)) 应该返回2.如果GC破坏这些类中的任何一个,则为1或0。

将struct更改为sealed类时,隐式转换失败

有问题的结构/类: public struct HttpMethod { public static readonly HttpMethod Get = new HttpMethod(“GET”); public static readonly HttpMethod Post = new HttpMethod(“POST”); public static readonly HttpMethod Put = new HttpMethod(“PUT”); public static readonly HttpMethod Patch = new HttpMethod(“PATCH”); public static readonly HttpMethod Delete = new HttpMethod(“DELETE”); private string _name; public HttpMethod(string name) { // validation of […]

不可变类vs结构

以下是类与C#中的结构不同的唯一方法(如果我错了请纠正我): 类变量是引用,而struct变量是值,因此struct的整个值被复制到赋值和参数传递中 类变量是存储在堆栈上的指针,指向堆上的内存,而struct变量作为值存储在堆上 假设我有一个不可变的结构,即struct,其字段在初始化后无法修改。 每次我将此结构作为参数传递或在赋值中使用时,该值都将被复制并存储在堆栈中。 然后假设我将这个不可变的结构化为一个不可变的类。 此类的单个实例将创建一次,并且只有对类的引用将被复制到赋值和参数传递中。 如果对象是可变的,那么这两种情况下的行为将是不同的:当一个人改变对象时,在第一种情况下,结构的副本将被修改,而在第二种情况下,原始对象将被改变。 但是,在这两种情况下,对象都是不可变的,因此这个对象的用户实际上是类还是结构没有区别。 由于复制引用比复制struct便宜,为什么要使用不可变结构? 此外,由于可变结构是邪恶的 ,看起来根本没有理由使用结构。 我哪里错了?

私有类变量的字段与属性

对于私有类变量,哪一个更受欢迎? 如果你有一个像int limit这样的属性,你希望它是: int Limit {get; set;} 并在类中使用它,如下所示: this.Limit 是否有理由使用它或不使用它? 可能出于性能原因? 我想知道这是不是一个好习惯。