小编Tyr*_*ess的帖子

比较C#中的日文字符

我正在检查日语字符串的空格并用"_"替换它们.这就是我在做的事情:

string input1="abc  dfg";
string input2="????";
if(input1.Contains(" "))
{
  Console.WriteLine(input1.Replace(" ","_"));
}
Console.WriteLine("------------------");
if(input2.Contains(" "))
{
  Console.WriteLine(input2.Replace(" ","_"));
}
Run Code Online (Sandbox Code Playgroud)

这是此代码的输出

abc__dfg
------------------
Run Code Online (Sandbox Code Playgroud)

它在简单的英文字符串中用"_"替换空格,但在日语字符串中则不是.

c# string

4
推荐指数
1
解决办法
762
查看次数

查找类型列表是否包含在类型列表中

是否有LINQ方法来确定是否,例如:

List<int> micro = new List<int>(){1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)

在...

List<List<int>> macro = new List<List<int>>();
Run Code Online (Sandbox Code Playgroud)

我可以foreach在宏上做一个循环并检查它是否包含至少一个包含List所有微项的东西(macro[0].Contains(1) && macro[0].Contains(2)...),但是有更多的C#方法吗?

c# linq

2
推荐指数
1
解决办法
92
查看次数

为什么我们不能为以下代码调试带有yield return的方法?

以下是我的代码:

class Program {
    static List<int> MyList;
    static void Main(string[] args) {
        MyList = new List<int>() { 1,24,56,7};
        var sn = FilterWithYield();
    }
    static IEnumerable<int> FilterWithYield() {
        foreach (int i in MyList) {
            if (i > 3)
                yield return i;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在FilterWithYield方法中有一个突破点,但它根本没有达到突破点.我在调用点有一个中断,即 var sn = FilterWithYield();Control点击此点并在调试窗口中正确显示结果.但是为什么控制不在FilterWithYield方法中停止?

还有一个问题.我读到yield将数据返回给调用者.如果将FilterWithYield方法的返回类型更改为通过错误将其返回到int,那么yield关键字是否总是需要IEnumerable<T>作为返回类型?

c# ienumerable yield-return

2
推荐指数
1
解决办法
3169
查看次数

获取,使用类名设置值

我希望我不会为这个问题得到大量的downvotes,但我想知道是否有办法使用实际的类名,而不调用属性来获取和设置值.例如,如果我有:

class Perfume
{
  private string _aroma;
  public string Aroma
  {
   set
   {
    _aroma = value;
   }
  }
}
Run Code Online (Sandbox Code Playgroud)

有办法吗?

Perfume perfume = new Perfume();
perfume = "Aroma"; // which will set _aroma to "Aroma";
Run Code Online (Sandbox Code Playgroud)

c#

0
推荐指数
1
解决办法
61
查看次数

ReactiveUI:属性未更新

不确定我做错了什么:

       private at = "0";
       public string AT
        {
            get
            {
                return aT;
            }
            set
            {
                aT = value;
                this.RaiseAndSetIfChanged(ref aT, value);
            }
        }
Run Code Online (Sandbox Code Playgroud)

使用ViewModel进行设置AT = "Something",调用Raise并最初设置View.但是,当AT被连续调用(每秒至少一次更新)时,在初始设置(aT的原始值)之后不会更新

this.WhenAnyValue(x => x.ViewModel.AT).Subscribe(x => Debug.WriteLine("Change in AT:" + x)); // using this to debug
Run Code Online (Sandbox Code Playgroud)

似乎有效的一段时间是这样的:

        set
        {
            aT = value;
            this.RaisePropertyChanged();
        }
Run Code Online (Sandbox Code Playgroud)

但是,在成功获得一个值(除了初始设置)之后,它崩溃了!我究竟做错了什么?

编辑:

在异步事件处理程序中更改此属性.在断点时,每次都会更改属性.这种情况大约每秒1次:

private async void ValueChanged(Something sender, SomeArgs args)
        {
            //Computation code here
            AT= string.Format("{0:0.0####}", ATOrigin);
            // Property is set - I checked
           // More code here
        }
Run Code Online (Sandbox Code Playgroud)

c# reactiveui

0
推荐指数
1
解决办法
782
查看次数

标签 统计

c# ×5

ienumerable ×1

linq ×1

reactiveui ×1

string ×1

yield-return ×1