我有两个构造函数,它们将值提供给只读字段.
public class Sample
{
public Sample(string theIntAsString)
{
int i = int.Parse(theIntAsString);
_intField = i;
}
public Sample(int theInt) => _intField = theInt;
public int IntProperty => _intField;
private readonly int _intField;
}
Run Code Online (Sandbox Code Playgroud)
一个构造函数直接接收值,另一个构造函数进行一些计算并获取值,然后设置字段.
现在这里是抓住:
有任何想法吗?
是否有一些罕见的语言构造我没有遇到过(比如我最近学到的一些,有些是关于Stack Overflow)在C#中得到一个表示foreach循环当前迭代的值?
例如,我目前根据具体情况做这样的事情:
int i = 0;
foreach (Object o in collection)
{
// ...
i++;
}
Run Code Online (Sandbox Code Playgroud) 可能是一个非常简单的 - 我开始使用C#并且需要为数组添加值,例如:
int[] terms;
for(int runs = 0; runs < 400; runs++)
{
terms[] = runs;
}
Run Code Online (Sandbox Code Playgroud)
对于那些使用过PHP的人来说,这就是我在C#中尝试做的事情:
$arr = array();
for ($i = 0; $i < 10; $i++) {
$arr[] = $i;
}
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的枚举构造:
public enum EnumDisplayStatus
{
None = 1,
Visible = 2,
Hidden = 3,
MarkedForDeletion = 4
}
Run Code Online (Sandbox Code Playgroud)
在我的数据库中,枚举由值引用.我的问题是,如何将枚举的数字表示形式转回字符串名称.
例如,给定2结果应该是Visible.
如何在JavaScript中验证对象的存在?
以下作品:
if (!null)
alert("GOT HERE");
Run Code Online (Sandbox Code Playgroud)
但这会引发错误:
if (!maybeObject)
alert("GOT HERE");
Run Code Online (Sandbox Code Playgroud)
错误:
maybeObject没有定义.
我想在一个类中添加一个运算符.我目前有一个GetValue()方法,我想用[]运算符替换.
class A
{
private List<int> values = new List<int>();
public int GetValue(int index) => values[index];
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在.Net(特别是C#)中深层复制对象?
请看下面的代码(摘自C#书):
public class MyClass
{
public int val;
}
public struct myStruct
{
public int val;
}
public class Program
{
private static void Main(string[] args)
{
MyClass objectA = new MyClass();
MyClass objectB = objectA;
objectA.val = 10;
objectB.val = 20;
myStruct structA = new myStruct();
myStruct structB = structA;
structA.val = 30;
structB.val = 40;
Console.WriteLine("objectA.val = {0}", objectA.val);
Console.WriteLine("objectB.val = {0}", objectB.val);
Console.WriteLine("structA.val = {0}", structA.val);
Console.WriteLine("structB.val = {0}", structB.val);
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道它会产生下面的输出
objectA.val …Run Code Online (Sandbox Code Playgroud) 在C#(以及许多其他语言)中,访问相同类型的其他实例的私有字段是完全合法的.例如:
public class Foo
{
private bool aBool;
public void DoBar(Foo anotherFoo)
{
if (anotherFoo.aBool) ...
}
}
Run Code Online (Sandbox Code Playgroud)
由于C#规范(第3.5.1,3.5.2节)规定对私有字段的访问属于类型,而不是实例.我一直在与同事讨论这个问题,我们试图找出它之所以如此工作的原因(而不是限制对同一个实例的访问).
我们可以提出的最佳参数是进行相等性检查,其中类可能希望访问私有字段以确定与另一个实例的相等性.还有其他原因吗?或者一些绝对意味着它必须像这样或某种东西工作的黄金理由是完全不可能的?
我创建了一个带有一些属性的界面.
如果接口不存在,则类对象的所有属性都将设置为
{ get; private set; }
Run Code Online (Sandbox Code Playgroud)
但是,在使用接口时不允许这样做,这样可以实现,如果是这样,怎么办?
非常简单地说:
我有一个主要由静态公共成员组成的类,所以我可以将类似的函数组合在一起,但仍然需要从其他类/函数中调用它们.
无论如何,我在我的类公共范围中定义了两个静态unsigned char变量,当我尝试在同一个类的构造函数中修改这些值时,我在编译时遇到"未解析的外部符号"错误.
class test
{
public:
static unsigned char X;
static unsigned char Y;
...
test();
};
test::test()
{
X = 1;
Y = 2;
}
Run Code Online (Sandbox Code Playgroud)
我是C++的新手,所以对我很轻松.为什么我不能这样做?