C# 增加c中属性的setter方法中的计数#
在C# 增加c中属性的setter方法中的计数#,c#,increment,C#,Increment,在类中我声明了一个属性如下 class MyClass { public string TName { get {return "";} } // and some other properties .... } 一种方法是返回类型IEnumerable,这里我想得到TName值 Name 1, Name 2, Name 3, Name 4........ 根据计数 问题: 如何在上述属性的setter方法中增加counter的值,以便像“
类中
我声明了一个属性
如下
class MyClass
{
public string TName
{
get {return "";}
}
// and some other properties ....
}
一种方法是返回类型IEnumerable
,这里我想得到TName
值
Name 1, Name 2, Name 3, Name 4........
根据计数
问题:
如何在上述属性的setter
方法中增加counter的值,以便像“Name”+counter那样追加代码>
或者有没有其他更好的方法来实现这一点,而无需循环
和从DB
获取计数
提前谢谢。您需要将TName
的值存储在私有字符串中
private string m_TName;
public string TName
{
get {return m_TName + counter;}
set {
if (m_TName != value){
m_TName = value
}
}
}
如果t名称
始终相同,则可以使用
private string m_TName = "Default value";
public string TName
{
get {return m_TName + counter;}
}
如果要增加每次呼叫的计数器
private string m_TName = "Default value";
public string TName
{
get {
counter++;
return m_TName + counter;
}
}
如果你想在每一个例子上都像他说的那样
private string m_TName;
public string TName
{
get {return m_TName;}
set {
if (m_TName != value){
counter++;
m_TName = value + counter;
}
}
}
如果您希望按照HimBromBeere的注释在每个实例上设置它,并且只希望设置一次
private string m_TName;
public string TName
{
get {return m_TName;}
set {
if (m_TName != value && m_TName == null){
counter++;
m_TName = value + counter;
}
}
}
在MyClass
中需要一个静态计数器,其中包含已创建的实例数:
class MyClass
{
static int count = 0;
public MyClass() { count++; }
}
现在,您可以轻松访问Name
-属性中的计数器:
string Name { get => $"Name{ counter }"; }
如果有多个线程可以同时递增计数器
,那么最好在构造函数中使用而不是计数+++
。同样的想法(我们有一个计数器s_计数
),但如果您希望它是线程安全的,我们必须以特殊方式递增它:
class MyClass {
private static int s_Count;
public string TName {
get;
}
public MyClass() {
TName = $"Name {Interlocked.Increment(ref s_Count)}";
}
}
这个类是否在数据库中持久化?您是否有一个Id
或Count
属性在数据库上设置为自动递增?我建议您考虑将其从TName
重命名为Name
。大写T通常放在泛型类型名称的开头,在这种情况下会令人困惑。我怀疑OP是否希望在每次调用时增加计数器,但在每次调用时都会增加计数器。如果是这样,您的答案会更好此答案比我的答案更好,因为它会在每个实例中给出完全相同的值,独立于同时创建了多少实例。非常感谢@Dmitry