我真的在努力找出易于调试的可重用代码的最佳实践。我遇到了开发人员之间的一种常见做法,但我还不太了解。publicMyConstructor(ObjectmyObject){if(myObject==null)thrownewArgumentNullException("myObjectisnull.");_myObject=myObject;}做这个检查几乎没有必要。但我认为这是因为我不完全了解进行此检查的好处是什么。似乎无论如何都会抛出空引用异常?我可能是错的,真的很想听听一些关于它的想法。谢谢。 最佳答案 对于编译器,null是
我正在使用C#处理一个对象,我需要该对象的每个实例都有一个唯一的ID。我对此的解决方案是简单地在类中放置一个我称为idCount的成员变量,并在我将拥有的构造函数中:objectID=idCount;idCount++;我认为这会解决我的问题,但似乎idCount永远不会增加,即使多次调用构造函数也是如此。例如,如果idCount=1,则所有对象的objectID仍为1。为什么idCount++不起作用?如有任何帮助,我们将不胜感激。如果我的解释不充分,我深表歉意,我不知道还能怎么解释。 最佳答案 您的类中需要一个静态属性,但是,如
背景:这是我目前正在处理的代码。首先是基类,它是一个帐户类,其中包含有关帐户的信息,并具有一些在大多数情况下更改类属性值的方法。publicclassAccount{privatestring_username;[...]publicstringUsername{get{return_username;}}[...]publicAccount(){}publicAccount(string[]args){[...]}publicvirtualvoidChangePassword(stringnewPassword){[...]}}然后,我有另一个类用于创建帐户,我将其命名为Active
我想在类中调用构造函数,例如:公共(public)类Myclass(){publicMyClass(){//......}publicMyClass(intid):this(){//......}privatevoidReset(){//.....this=newMyClass(id);//hereIwanttocallconstructor//......}}但它不起作用。这可能吗?如果可以,我该怎么做? 最佳答案 简单的回答:你不能。稍微复杂一点的答案:将您的初始化逻辑移动到一个单独的方法中,该方法可以从构造函数和您的Reset
在VisualStudio2010C#中,您可以在类中键入ctor,然后按tab,VisualStudio将为我创建该类的构造函数。非常方便。但是有没有办法让VisualStudio使用我的所有变量、属性等创建一个构造函数?例如,publicclassUser{publicStringUserName{get;privateset;}}为此,我希望ctor+tab让我成为一个publicUser(stringUserName){this.UserName=UserName;} 最佳答案 你也可以反过来做;如果您开始时没有构造函数或字
如果您有一个类和一个将对象作为输入参数的构造函数-该对象是按引用传递还是按值传递?并且假设对于类方法,除非使用ref关键字,否则默认情况下对象输入参数按值传递是否正确?out关键字呢?这是否仍然意味着它是通过引用传递的? 最佳答案 Ifyouhaveclassandaconstructorwhichtakesinanobjectasainputparam-isthatobjectpassedbyreferenceorisitpassedbyvalue?在C#中所有参数都是按值传递的,除非参数被标记为out或ref。这是一个巨大的困惑
我有一个类:publicclassMyClass{publicMyClass(){}}我希望能够使用XMLSeralizer直接在构造函数中反序列化XDocument,因此:publicclassMyClass{privateXmlSerializer_s=newXmlSerializer(typeof(MyClass));publicMyClass(){}publicMyClass(XDocumentxd){this=(MyClass)_s.Deserialize(xd.CreateReader());}}除非我不允许在构造函数中分配给“this”。这可能吗?
publicDerivedClass(stringx):base(x){x="blah";}此代码会调用值为x的基本构造函数作为“blah”吗? 最佳答案 碱基调用总是先完成,但您可以让它调用静态方法。例如:publicConstructor(stringx):base(Foo(x)){//stuff}privatestaticstringFoo(stringy){returny+"Foo!";}现在如果你打电话newConstructor("Hello");然后将使用“HelloFoo!”调用基础构造函数。请注意,您不能在正在构造
有办法吗?我需要实现特定接口(interface)的所有类型都具有无参数构造函数,可以吗?我正在为我公司的其他开发人员开发用于特定项目的基本代码。有一个进程将创建执行特定任务的类型实例(在不同的线程中),我需要这些类型遵循特定的约定(因此,接口(interface))。接口(interface)将在程序集内部如果您对这种没有接口(interface)的场景有什么建议,我很乐意考虑... 最佳答案 不要太直白,但你误解了接口(interface)的用途。一个接口(interface)意味着几个人可以在自己的类中实现它,然后将那些类的实
我一直在试图找出这些构造函数之间是否存在任何差异。假设有一个不带参数的Foo()构造函数,所有这些构造函数都会有相同的结果吗?例子1publicFoo():this(){blah;blah;blah;}例子2publicFoo(){this();blah;blah;blah;}示例3publicFoo(){this=newFoo();blah;blah;blah;} 最佳答案 示例1是有效的(假设有一个无参数构造函数),并且调用无参数构造函数作为初始化的一部分。看我的articleonconstructorchaining更多细节。