我收集了一些角落案例和脑筋急转弯,并且总是希望听到更多.该页面仅涵盖C#语言位和bobs,但我也发现核心.NET的东西也很有趣.例如,这是一个不在页面上,但我觉得不可思议的:
string x = new string(new char[0]);
string y = new string(new char[0]);
Console.WriteLine(object.ReferenceEquals(x, y));
Run Code Online (Sandbox Code Playgroud)
我希望打印False - 毕竟,"new"(带引用类型)总是会创建一个新对象,不是吗?C#和CLI的规范都表明它应该.好吧,不是在这种特殊情况下.它打印True,并在我测试过的每个版本的框架上完成.(我没有在Mono上尝试过,诚然......)
需要明确的是,这只是我正在寻找的那种事情的一个例子 - 我并不是特别想要讨论这种奇怪的事情.(它与正常的字符串实习不同;特别是,当调用构造函数时,通常不会发生字符串实习.)我真的要求类似的奇怪行为.
还有其他宝石潜伏在那里吗?
我知道这应该是一个非常简单的问题,但我一直在努力解决这个概念.我的问题是,你如何在c#中链接构造函数?我是第一个OOP课程,所以我只是在学习.我不明白构造函数链如何工作或如何实现它,甚至为什么它不仅仅是没有链接的构造函数.
我会很感激一些解释的例子.
那么如何将它们联系起来呢?我知道有两个:
public SomeClass this: {0}
public SomeClass
{
someVariable = 0
}
Run Code Online (Sandbox Code Playgroud)
但你如何用三,四等做到这一点?
再一次,我知道这是一个初学者的问题,但我很难理解这一点,我不知道为什么.
可能重复:
您何时使用"this"关键字?
您好,我知道该This关键字用于引用该类的实例,但是,假设我有一个名为的类Life,它定义了两个字段,person(他们的名字)和他们的伙伴(他们的名字):
class Life
{
//Fields
private string _person;
private string _partner;
//Properties
public string Person
{
get { return _person; }
set { _person = value; }
}
public string Partner
{
get { return _partner; }
set { _partner = value; }
}
//Constructor 1
public Life()
{
_person = "Dave";
_partner = "Sarah";
MessageBox.Show("Life Constructor Called");
}
//Constructor 2
public Life()
{
this._person = "Dave";
this._partner = "Sarah"; …Run Code Online (Sandbox Code Playgroud) 所以我有一个非常简单的带有Id字段的类,Id可以在构造函数中设置.
通常,我将使用它this来清楚地标识类属性而不是方法参数.对我来说,这似乎更清晰.
IDE0003要我删除this"姓名可以简化"的消息,这是正确的吗?
这对我来说似乎不太清楚,并且还容易导致套管错误id = id.
我刚刚看到来自MSDN的示例代码并且来了:
namespace IListSourceCS
{
public class Employee : BusinessObjectBase
{
private string _id;
private string _name;
private Decimal parkingId;
public Employee() : this(string.Empty, 0) {} // <<--- WHAT IS THIS???
public Employee(string name) : this(name, 0) {}
Run Code Online (Sandbox Code Playgroud) 很抱歉再次询问,已经有一些关于此关键字的问题.但他们所有人都说出了"这个"的目的.
什么时候使用这个关键字
C#何时使用此关键字
在C#中使用静态方法的形式参数中的"this"关键字在C#中
正确使用"this."关键字?
我的问题是何时不使用'this'关键字.
或者
在代码之类的情况下始终使用此关键字是否正确
class RssReader
{
private XmlTextReader _rssReader;
private XmlDocument _rssDoc;
private XmlNodeList _xn;
protected XmlNodeList Item { get { return _xn; } }
public int Count { get { return _count; } }
public bool FetchFeed(String url)
{
this._rssReader = new XmlTextReader(url);
this._rssDoc = new XmlDocument();
_rssDoc.Load(_rssReader);
_xn = _rssDoc.SelectNodes("/rss/channel/item");
_count = _xn.Count;
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
这里我没有使用'this'和"_xn"和"_count"也没有使用"_rssDoc.Load(_rssReader);" 好吗?我应该在类中使用"this"以及所有类变量吗?
编辑:在类中为自己的变量使用'this' 是没用的吗?
可能重复:
您何时使用"this"关键字?
我刚刚开始使用Resharper来分析我的代码,它有很多建议我做的事情,我对它的输出非常满意,因为它也教会了我一些更好的做法.
显然,它的建议可以被忽略,其中一个我想从社区获得一些反馈!
我总是倾向于将'this'限定符用于属于当前类的属性(即this.Name).没有真正的理由 - 我似乎只是采用了这么多个月.
Resharper建议这是多余的,也许我应该删除它.
你怎么看?
我注意到如果你在一个类中有一个私有成员,你可以通过引用它的名称在类方法中访问它.你不需要说this.memberName,只是memberName工作.那么在成员访问的上下文中this关键字是可选的吗?
当你想澄清范围时,我确实看到它很有用 - 当你有两个同名的变量时.访问会员时是否还有其他理由使用它?
在以下构造函数中,是否需要'this'关键字?我知道我可以删除它,它符合,一切都很好.如果我省略'this'那将导致我的问题在路上?是否认为"这个"被认为是不好的做法?
// Constructor:
public Employee(string name, string alias)
{
// Use this to qualify the fields, name and alias:
this.name = name;
this.alias = alias;
}
Run Code Online (Sandbox Code Playgroud)