小编Dmi*_*nko的帖子

如何在不将最后一行留空的情况下向richtextbox添加新行?

我正在为我正在创建的程序创建一个日志系统,我现在已将它用于执行此操作的位置:

void outToLog(string output)
{
    logRichTextBox.AppendText(output + "\r\n");
    logRichTextBox.ScrollToCaret();
}
Run Code Online (Sandbox Code Playgroud)

但它最终输出了RichTextBox空白的最后一行(因为我正在使用\n),我希望最后一行只是输出,而不是空行.另一种选择是让我把它"\r\n"放在开头,但是除了它在开头之外,它只有相同的影响RichTextBox.

救命?谢谢

c# winforms

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

铸造成可以为空的枚举

我有一个关于转换为可以为空的枚举的问题.这是一个代码:

enum Digits
{
    One = 1,
    Two = 2
}

void Main()
{
    int one = 1;
    object obj = one;
    var en = (Digits?) obj;
    Console.WriteLine(en);
}
Run Code Online (Sandbox Code Playgroud)

它让我排InvalidCastException在第11行.
但如果我省略'?' 在该行中的符号,它给出了正确的结果"一",但我不想失去"可空性".
作为我现在使用的解决方法var en = (Digits?) (int?) obj;,虽然我不确定这种解决方案的完全正确性,但它仍然有效.

但我想知道为什么在第一种情况下,铸造到可以为空的枚举失败了?

我期望对可空类型的转换如下:
- 转换为非可空类型,如果成功则转换为可空类型
- 如果null传递则结果null也是如此
但它似乎不是真的.

c# enums

6
推荐指数
1
解决办法
4285
查看次数

如何手动构建将始终返回true的Expression?

我试图创建Expression,但失败了.

我想建立类似的东西 Expression<Func<typeof(type), bool>> expression = _ => true;

我的尝试:

private static Expression GetTrueExpression(Type type)
{
    LabelTarget returnTarget = Expression.Label(typeof(bool));
    ParameterExpression parameter = Expression.Parameter(type, "x");

    var resultExpression = 
      Expression.Return(returnTarget, Expression.Constant(true), typeof(bool));

    var delegateType = typeof(Func<,>).MakeGenericType(type, typeof(bool));

    return Expression.Lambda(delegateType, resultExpression, parameter); ;
}
Run Code Online (Sandbox Code Playgroud)

用法:

var predicate = Expression.Lambda(GetTrueExpression(typeof(bool))).Compile();
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误: Cannot jump to undefined label ''

c# linq lambda expression-trees

6
推荐指数
1
解决办法
2156
查看次数

将 ushort[] 转换为 byte[] 并返回

我有一个 ushort 数组,需要转换为字节数组才能通过网络传输。

一旦它到达目的地,我需要将它重新转换回原来的 ushort 数组。

超短数组

是一个长度为 217,088 的数组(分解图像 512 x 424 的一维数组)。它存储为 16 位无符号整数。每个元素为 2 个字节。

字节数组

出于网络目的,需要将其转换为字节数组。由于每个 ushort 元素值 2 个字节,我假设字节数组长度需要为 217,088 * 2?

在转换和正确“取消转换”方面,我不确定如何做到这一点。

这是针对 C# 语言的 Unity3D 项目。有人能指出我正确的方向吗?

谢谢。

c# arrays byte ushort

6
推荐指数
1
解决办法
1万
查看次数

在c#中获取字符串之间的字符串

我试图在相同的字符串之间获取字符串:

The texts starts here ** Get This String ** Some other text ongoing here.....
Run Code Online (Sandbox Code Playgroud)

我想知道如何获得星星之间的字符串。我应该使用一些正则表达式还是其他函数?

c# string

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

C# 通过瑞典国家名称获取 RegionInfo、TwoLetterISORegionName

我需要为国家/地区获取两个字母的 ISO 区域名称ISO 3166- ISO 3166-1 alpha 2。我的问题是我只有瑞典语的国家名称,例如SverigeforSwedenTysklandfor Germany。是否可以仅从这些信息中获取 RegionInfo?我知道英语国家名称是可能的。

作品:

var countryName = "Sweden";
//var countryName = "Denmark";
var regions = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Select(x => new RegionInfo(x.LCID));
var englishRegion = regions.FirstOrDefault(region => region.EnglishName.Contains(countryName));
var twoLetterISORegionName = englishRegion.TwoLetterISORegionName;
Run Code Online (Sandbox Code Playgroud)

/sf/answers/998360471/

c# globalization

6
推荐指数
1
解决办法
1012
查看次数

如何在某个订单中获取类中的属性名称列表

我有一个类似于的类:

public class MyClass : MyBaseClass
{
        public string Field1 { get; set; }
        public string Field2 { get; set; }
        public string Field3 { get; set; }
        public string Field4 { get; set; }
}

public class MyBaseClass
{
        public string BaseField1 { get; set; }
        public string BaseField2 { get; set; }
        public string BaseField3 { get; set; }
        public string BaseField4 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个从类中提取名称的方法.

private void MyMethod<T>(List<T> listData) where T : class
{
    String[] …
Run Code Online (Sandbox Code Playgroud)

c#

6
推荐指数
1
解决办法
341
查看次数

为什么java和c#在简单的添加方面有所不同

我有两个片段,一个用Java编写,一个用c#编写.

float a = 1234e-3f;
float b = 1.23f;
float ca = 1.234e3f;
float d = 43.21f;
long e = 1234L;
int f = 0xa;
int g = 014;
char h = 'Z';
char ia = ' ';


byte j = 123;
short k = 4321;

System.out.println(a+b+ca+d+e+f+g+h+ia+j+k);
Run Code Online (Sandbox Code Playgroud)

Java的代码片段返回7101.674

并在c#

float a = 1234e-3f;
float b = 1.23f;
float ca = 1.234e3f;
float d = 43.21f;
long e = 1234L;
int f = …
Run Code Online (Sandbox Code Playgroud)

c# java

6
推荐指数
1
解决办法
166
查看次数

渲染特殊字符C#

我有一个包含特殊字符的字符串,例如以下示例:12345678912 \ rJ \ u0011,因为我需要有权访问这些特殊字符来配置我的应用程序。我想在TextBox字段中完全显示此字符串,因此到目前为止,我尝试过的所有操作都会产生一个字符串,其中该字符\u0011尝试使用结尾处的空字符进行呈现:"7896104866061\rJ"

我做了这个,但是没用。

string result = Regex.Replace(
    ToLiteral(this.Buffer), 
   "[^\x00-\x7Fd]", 
    c => string.Format("\\u{0:x4}", (int)c.Value[0]))
 .Replace(@"\", @"\\");

public static string ToLiteral(string input)
    {
        using (var writer = new StringWriter())
        {
            using (var provider = CodeDomProvider.CreateProvider("CSharp"))
            {
                provider.GenerateCodeFromExpression(
                    new CodePrimitiveExpression(input), 
                    writer, 
                    null);

                return writer.ToString();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我该怎么办?提前致谢。

c# string string-formatting winforms

6
推荐指数
1
解决办法
189
查看次数

在异步无效中取消任务

嗨,我有一个列表框 每当用户选择一个项目时,就会向网络发送一个请求 现在我想在用户选择该项目时取消之前的操作,然后开始新的操作。

我使用以下代码来做到这一点,我想知道这些代码是否工作正常。还是我应该尝试另一种方式?

private CancellationTokenSource ts = new CancellationTokenSource();
private async void Subf2mCore(CancellationToken ct)
{
  HtmlDocument doc = await web.LoadFromWebAsync(url);
   ...
  foreach (var node in doc)
  {
    if (!ct.IsCancellationRequested)
    {
      ....
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我以这种方式运行 func

ts?.Cancel();
ts = new CancellationTokenSource();
Subf2mCore(ts.Token);
Run Code Online (Sandbox Code Playgroud)

c# task cancellation cancellationtokensource

6
推荐指数
1
解决办法
313
查看次数