小编Aus*_*yan的帖子

从另一个调用一个构造函数

我有两个构造函数,它们将值提供给只读字段.

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)

一个构造函数直接接收值,另一个构造函数进行一些计算并获取值,然后设置字段.

现在这里是抓住:

  1. 我不想复制设置代码.在这种情况下,只设置一个字段,但当然可能不止一个.
  2. 要使字段只读,我需要从构造函数中设置它们,因此我无法将共享代码"提取"到实用程序函数中.
  3. 我不知道如何从另一个构建函数调用.

有任何想法吗?

c# constructor

927
推荐指数
8
解决办法
43万
查看次数

你如何获得foreach循环的当前迭代的索引?

是否有一些罕见的语言构造我没有遇到过(比如我最近学到的一些,有些是关于Stack Overflow)在C#中得到一个表示foreach循环当前迭代的值?

例如,我目前根据具体情况做这样的事情:

int i = 0;
foreach (Object o in collection)
{
    // ...
    i++;
}
Run Code Online (Sandbox Code Playgroud)

c# foreach

861
推荐指数
22
解决办法
81万
查看次数

将值添加到C#数组

可能是一个非常简单的 - 我开始使用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)

c# arrays

473
推荐指数
11
解决办法
148万
查看次数

值的枚举字符串名称

我有一个像这样的枚举构造:

public enum EnumDisplayStatus
{
    None    = 1,
    Visible = 2,
    Hidden  = 3,
    MarkedForDeletion = 4
}
Run Code Online (Sandbox Code Playgroud)

在我的数据库中,枚举由值引用.我的问题是,如何将枚举的数字表示形式转回字符串名称.

例如,给定2结果应该是Visible.

c# enums

370
推荐指数
12
解决办法
45万
查看次数

检查JavaScript中是否存在对象

如何在JavaScript中验证对象的存在?

以下作品:

if (!null)
   alert("GOT HERE");
Run Code Online (Sandbox Code Playgroud)

但这会引发错误:

if (!maybeObject)
   alert("GOT HERE");
Run Code Online (Sandbox Code Playgroud)

错误:

maybeObject 没有定义.

javascript variables debugging null undefined

296
推荐指数
9
解决办法
49万
查看次数

如何在C#中重载[]运算符

我想在一个类中添加一个运算符.我目前有一个GetValue()方法,我想用[]运算符替换.

class A
{
    private List<int> values = new List<int>();

    public int GetValue(int index) => values[index];
}
Run Code Online (Sandbox Code Playgroud)

c# indexer operator-overloading

285
推荐指数
4
解决办法
13万
查看次数

在C#中创建对象的副本

可能重复:
如何在.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# reference object cloning

150
推荐指数
4
解决办法
55万
查看次数

为什么私有字段属于该类型,而不是实例?

在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节)规定对私有字段的访问属于类型,而不是实例.我一直在与同事讨论这个问题,我们试图找出它之所以如此工作的原因(而不是限制对同一个实例的访问).

我们可以提出的最佳参数是进行相等性检查,其中类可能希望访问私有字段以确定与另一个实例的相等性.还有其他原因吗?或者一些绝对意味着它必须像这样或某种东西工作的黄金理由是完全不可能的?

c# oop language-features language-design private-members

149
推荐指数
6
解决办法
7466
查看次数

在使用界面时如何实现私有的setter?

我创建了一个带有一些属性的界面.

如果接口不存在,则类对象的所有属性都将设置为

{ get; private set; }
Run Code Online (Sandbox Code Playgroud)

但是,在使用接口时不允许这样做,这样可以实现,如果是这样,怎么办?

c# asp.net interface getter-setter

126
推荐指数
2
解决办法
3万
查看次数

静态类成员上未解析的外部符号

非常简单地说:

我有一个主要由静态公共成员组成的类,所以我可以将类似的函数组合在一起,但仍然需要从其他类/函数中调用它们.

无论如何,我在我的类公共范围中定义了两个静态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++的新手,所以对我很轻松.为什么我不能这样做?

c++ static class members

122
推荐指数
5
解决办法
12万
查看次数