小编Sin*_*atr的帖子

C#中所有操作数的列表

很简单的问题:如何获取C#中所有操作数的列表?例:

{ "return", "break", "if", "case", "switch", ... };
Run Code Online (Sandbox Code Playgroud)

更难的问题:如何获取所有函数(类型,方法)的列表?

{ "string", "Math.Abs", "double.IsNaN", "int.ToString", ... };
Run Code Online (Sandbox Code Playgroud)

我想为CodeDom制作类似IntelliSense(非常糟糕和肮脏的东西)的东西.因此,用户可以通过将其代码添加到我的文本中来扩展软件的功能.我向他提供了一个函数体,其中包含一些他可以使用的参数,但是他也应该能够使用任何标准函数,例如,或者.他将代码输入RichTextEditor.我想让他更容易看到语法(突出显示已知的操作数,打开/关闭括号,函数参数).double.ToString()Math.PI

我已经可以突出显示单词(参数)并且它看起来不错,但突出一切都很酷.而且我认为这是得到的操作数/ functins /类型/方法,我也不懂怎么办(我都可以操作数输入到阵列中自己OFC)的想法名单.

这个问题应该改写一下:如何制作我自己的IntelliSense?:-)

PS:快速潜伏甚至没有提供我一个单一的结果,我实际上有问题来制定我正在寻找的东西.

c# intellisense rich-text-editor operands

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

检查所选项目是否可见[详细信息视图中的虚拟ListView]

subj 有什么好的/简短的解决方案吗?

我能想到:

  • 获取TopItem索引(在VirtualMode创建项目之前是否可以为空?),如果所需项目的索引较小,则不可见,否则获取底部可见索引(顶部索引+ listView.ClientSize.Height / GetItemRect(TopItem).Height),如果所需项目的索引较多,则为无形的。否则可见。

  • 以某种方式检测滚动并做一些事情。

或者也许有更简单的方法?

c# listview virtualmode winforms

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

int不包含值的定义

我正在使用Visual Studio C#这个错误出现在我的代码上,我不知道如何解决:

'int'不包含'Value'的定义,并且没有扩展方法'Value'可以找到接受类型'int'的第一个参数(你是否缺少using指令或汇编引用?)

无效的代码是

int Mod = randomizer.Next(2, 11);
int sum2 = randomizer.Next(2, 11);
modend = Mod * sum2;
ModLeft.Text = dividend.ToString();
ModRight.Text = divisor.ToString();
sum2.Value = 0;
Run Code Online (Sandbox Code Playgroud)

c#

0
推荐指数
2
解决办法
6218
查看次数

内存泄漏,但在哪里?

我无法理解这里泄漏的是什么

using GDI = System.Drawing;

public partial class MainWindow : Window
{
    [DllImport("gdi32.dll")]
    private static extern bool DeleteObject(IntPtr obj);

    public MainWindow()
    {
        InitializeComponent();

        var timer = new DispatcherTimer() { Interval = TimeSpan.FromMilliseconds(50) };
        timer.Tick += (s, a) =>
        {
            using (var bitmap = new GDI.Bitmap(1000, 1000))
            {
                var hbitmap = bitmap.GetHbitmap();
                var image = Imaging.CreateBitmapSourceFromHBitmap(hbitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
                image.Freeze();
                DeleteObject(hbitmap);
            }
        };
    timer.Start();
}
Run Code Online (Sandbox Code Playgroud)

bitmap?弃置.hbitmap?删除.image?冷冻,但事实并非如此IDisposable.

事实是,这个应用程序会崩溃(在运行约20秒后在我的电脑上)

System.Drawing.dll中发生了未处理的"System.OutOfMemoryException"类型异常

附加信息:内存不足.

有任何想法吗?

c# wpf memory-leaks

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

拆分长插值字符串

一个例子:

var a = $"Some value 1: {b1:0.00}\nSome value 2: {b2}\nSome value 3: {b3:0.00000}\nSome value 4: {b4:0.00}\nSome value 5: {b6:0.0}\nSome value 7: {b7:0.000000000}";
Run Code Online (Sandbox Code Playgroud)

这有点难以阅读.

我能做到

var a = $"Some value 1: {b1:0.00}\n" +
        $"Some value 2: {b2}\n" +
        $"Some value 3: {b3:0.00000}\n" +
        $"Some value 4: {b4:0.00}\n" +
        $"Some value 5: {b6:0.0}\n" +
        $"Some value 7: {b7:0.000000000}";
Run Code Online (Sandbox Code Playgroud)

但是这里有一条评论说什么这将是多次调用string.Format,我认为它会(不知道如何检查它,IL对我来说是一个黑盒子).

问题:可以吗?拆分长插值字符串有哪些其他选项?

c# code-formatting string-interpolation c#-6.0

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

如何使用C#连续读取文件夹中的文件?

我想连续读取本地驱动器上文件夹中的所有图像文件,然后进行一些处理,并在读取所有图像后结束程序。图像编号不是连续的,它们是随机的,但它们位于单个文件夹中。目前我的程序只能读取一个文件;请参阅下面的代码

string imagePath = Path.Combine(Freconfig.GetSamplesFolder(), "24917324.jpg");
Run Code Online (Sandbox Code Playgroud)

.net c#

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

SemaphoreSlim和async/await

这有效:

int _counter;
readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1);

async void Button_Click(object sender, RoutedEventArgs e)
{
    if (_semaphore.Wait(0))
    {
        Title = $"{ ++_counter}";
        await Task.Delay(1000); // simulate work
        Title = $"{ --_counter}";
        _semaphore.Release();
    }
}
Run Code Online (Sandbox Code Playgroud)

首次单击其他按钮后,将忽略单击,直到工作完成.Tittle可以是10.

这不起作用

void Button_Click(object sender, RoutedEventArgs e)
{
    if (_semaphore.Wait(0))
    {
        Test(); // moving code into separate method
        _semaphore.Release();
    }
}

async void Test()
{
    Title = $"{ ++_counter}";
    await Task.Delay(1000); // simulate work
    Title = $"{ --_counter}"; …
Run Code Online (Sandbox Code Playgroud)

c# synchronization semaphore

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

当从同一个类的公共方法返回时,为什么我能够在其他类的公共方法中修改私有成员

我能够从其他类的main方法更新类实例的私有成员.为什么我被允许这样做.它是否喜欢,它使用"ref"关键字?

我尝试使用"ref"关键字进行修改.

using System;

namespace Test2
{
    class A
    {
        private int a=10; 
        public ref int M() 
        {
            return ref a;
        }
        virtual public void display()
        {
            Console.WriteLine("class A");
        }
    }
    class B:A
    { 

    }
    class Program
    {  
        static void Main(string[] args)
        {
            B b = new B();
            ref int a = ref b.M();
            Console.WriteLine(a);
            a = 20;
            Console.WriteLine(b.M());
            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# access-modifiers private-members c#-7.0

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

将这两种方法转换为负值是否存在差异?

//值是双倍的

有什么区别吗?编译器进行此计算的快速方法是什么?

value = System.Math.Abs(55.55);
this.Value = -value;

// or    
this.Value = System.Math.Abs(value) * (-1);
Run Code Online (Sandbox Code Playgroud)

c# double

-1
推荐指数
1
解决办法
118
查看次数

记录消息的类,事件名称?

可能是一个非常愚蠢,但一个问题.可能是一个错误,但一个网站.

假设我有一个Log静态方法的类Start,StopLog.

如果有什么东西在调用,你会怎么称呼这个事件Log("...");呢?

在过去的20分钟里,我偶然发现了一个正确的名字.AddedLog(但已有方法Log)?什么是最直观易懂的事件名称?

c# naming

-3
推荐指数
1
解决办法
66
查看次数