小编Igb*_*man的帖子

M代表C#十进制文字符号的含义是什么?

为了使用十进制数据类型,我必须使用变量初始化来执行此操作:

decimal aValue = 50.0M;
Run Code Online (Sandbox Code Playgroud)

M部分代表什么?

c# decimal literals

282
推荐指数
4
解决办法
11万
查看次数

使用Oracle to_date函数作为日期字符串,以毫秒为单位

我必须在Oracle DB中执行一些插入操作.我有以下格式的日期

'23.12.2011 13:01:001'
Run Code Online (Sandbox Code Playgroud)

根据我编写的文档,插入to_date如下:

to_date('23.12.2011 13:01:01', 'DD.MM.YYYY HH24:MI:SS')
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.现在我的格式日期为毫秒

'23.12.2011 13:01:001'
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法:

to_date('23.12.2011 13:01:001', 'DD.MM.YYYY HH24:MI:SSFF3')
Run Code Online (Sandbox Code Playgroud)

这是不正确的(传递错误01821. 00000 - "日期格式无法识别").

我应该使用哪个"字符串"这种格式,用毫秒?

提前致谢!

oracle to-date

49
推荐指数
4
解决办法
28万
查看次数

"爬山"和"贪婪"算法有什么区别?

请解释"爬山"和"贪婪"算法之间的区别.

看起来两者都很相似,我怀疑"爬山"是一种算法; 这似乎是一种优化.它是否正确?

algorithm

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

为什么这个泛型场景会导致TypeLoadException?

这有点啰嗦,所以这是快速版本:

为什么这会导致运行时TypeLoadException?(并且编译器是否应该阻止我这样做?)

interface I
{
    void Foo<T>();
}

class C<T1>
{
    public void Foo<T2>() where T2 : T1 { }
}

class D : C<System.Object>, I { } 
Run Code Online (Sandbox Code Playgroud)

如果您尝试实例化D,则会发生异常.


更长,更具探索性的版本:

考虑:

interface I
{
    void Foo<T>();
}

class C<T1>
{
    public void Foo<T2>() where T2 : T1 { }
}

class some_other_class { }

class D : C<some_other_class>, I { } // compiler error CS0425
Run Code Online (Sandbox Code Playgroud)

这是非法的,因为类型约束C.Foo()与那些不匹配I.Foo().它会生成编译器错误CS0425.

但我想我可能会违反规则:

class D : C<System.Object>, I { } // …
Run Code Online (Sandbox Code Playgroud)

c# generics clr runtime compiler-bug

18
推荐指数
1
解决办法
2345
查看次数

更改项目的目标框架后应用程序设置错误

在我的应用程序中,我正在使用此处说明的用户设置.然后我意识到在VS 2010中我使用的是.NET 4.0,而只有.NET 2.0就足够了.

当我更改框架并构建项目时,每当我现在访问设置时,在我的代码中,我收到以下错误:

为userSettings/Vegi_Manager.Properties.Settings创建配置节处理程序时出错:无法加载文件或程序集'System,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一.该系统找不到指定的文件.(C:\ Users\AKSHAY\AppData\Local\Microsoft\Vegi-Manager.vshost.exe_Url_44035dlkzpfaaauiqsd4nh3f0l0yq0tv\1.0.0.0\user.config第5行)

这是使用4.0版的未知原因.请建议我该怎么做.

.net c# app-config application-settings

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

一次读取一个字符串,3x3个字符

想象一下这个字符串:

    _  _     _  _  _  _  _
  | _| _||_||_ |_   ||_||_|
  ||_  _|  | _||_|  ||_| _| 
Run Code Online (Sandbox Code Playgroud)

分割这个字符串最简单/最好的方法是什么,这样每个数字都可以自己处理?

我在想类似的东西

public string[] SplitIntoNumbers(string input)
Run Code Online (Sandbox Code Playgroud)

结果会是什么样的

["     |  |", " _  _||_ ", " _  _| _|", ...]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑
因为想要更多信息 - 问题来自于BankOCR -kata over CodingDojo.我意识到有多种方法可以"完成工作" - 解决方案,但我觉得必须有一种更''花哨'的解决方法.一些类似于clojure的东西.

c# string split

12
推荐指数
1
解决办法
451
查看次数

如何使用与OnPropertyChanged一起使用的UserControl的可绑定属性

我有一个简单的usercontrol(WinForms)与一些公共属性.当我使用此控件时,我想数据绑定到DataSourceUpdateMode设置为OnPropertyChanged的那些属性.数据源是一个实现INotifyPropertyChanged的类.

我知道需要为属性创建绑定,我正在这样做.

我假设我的usercontrol必须实现一个接口,或者属性需要用某些属性进行修饰,或者沿着那些行进行修饰.但是我的研究空白了.

该如何实现?目前,我正在通过在属性更改时在我的usercontrol中调用OnValidating()来实现它,但这似乎不对.

如果我在用户控件上将CausesValidation设置为true,我可以进行验证,但这对我来说不是很有用.我需要验证每个子属性的变化.

请注意,这是WinForms的情况.

编辑:显然我没有解释的天赋,所以希望这将澄清我在做什么.这是一个简短的例子:

// I have a user control
public class MyControl : UserControl
{
    // I'm binding to this property
    public string ControlProperty { get; set; }

    public void DoSomething()
    {
        // when the property value changes, the change should immediately be applied 
        // to the bound datasource
        ControlProperty = "new value";

        // This is how I make it work, but it seems wrong
        OnValidating();         
    }
}

// the class …
Run Code Online (Sandbox Code Playgroud)

.net c# data-binding user-controls winforms

10
推荐指数
1
解决办法
9615
查看次数

基本的用户输入字符串验证

我一直在写我的人抽象类的名字属性的支票.我的问题是,我试图实现一段代码,不允许用户将字段留空或超过35个字符的名称限制或输入数字,但我坚持使用它.如果有人可以帮助或建议我.

    public string Name
    {
        get { return name; }

        set 
        {
            while (true)
            {
                if (value == "" || value.Length > 35)
                {
                    Console.Write("Please Enter Correct Name: ");
                    value = Console.ReadLine();
                    continue;
                }

                foreach (char item in value)
                {                        
                    if (char.IsDigit(item))
                    {
                        Console.Write("Digits Are NotAllowed....\n");
                        Console.Write("Please Enter Correct Name: ");
                        value = Console.ReadLine();
                        break;
                    }
                }
                break;
            }
            name = value;                
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# validation

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

取消装箱只是返回指向堆上盒装对象中的值的指针吗?

在MSDN杂志的这篇文章中,作者陈述(强调我的):

请注意,装箱始终会创建一个新对象,并将未装箱的值的位复制到该对象.另一方面,取消装箱只返回指向盒装对象内数据的指针:不会发生内存复制.但是,通常情况下,您的代码将导致未装箱引用指向的数据被复制.

我对我加粗的句子和随后的句子感到困惑.从我读过的其他内容,包括这个MSDN页面,我以前从未听说过取消装箱只返回指向堆上值的指针.我的印象是,拆箱会导致你有一个包含堆栈值的副本的变量,就像你开始一样.毕竟,如果我的变量包含"指向堆上的值的指针",那么我没有值类型,我有一个指针.

有人可以解释这意味着什么吗?作者是破解?(文章中至少还有一个明显的错误).如果这是真的,那么"您的代码将导致未装箱的引用指向的数据无论如何都被复制"的情况是什么?

我刚刚注意到这篇文章已经有近10年的历史了,所以也许这在.Net的生命中很早就发生了变化.

.net boxing unboxing

9
推荐指数
2
解决办法
550
查看次数

使整个方法线程安全的最简单方法是什么?

关于多线程编程似乎有很多东西需要学习,而且它有点令人生畏.

对于我目前的需求,我只想防止在完成之前从另一个线程再次调用的方法,我的问题是:

这是一种使方法线程安全的充分(安全)方法吗?

class Foo
{
    bool doingWork;
    void DoWork()
    {
        if (doingWork)  // <- sophistocated thread-safety
            return;     // <-

        doingWork = true;

        try
        {
            [do work here]
        }
        finally
        {
            doingWork = false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这还不够,最简单的方法是什么?


编辑:有关场景的更多信息:

  • Foo只有一个例子

  • 将在System.Timers.Timer的Elapsed事件上从ThreadPool线程调用Foo.DoWork().

  • 通常Foo.DoWork()会在下次调用之前完成eons,但是我想编码它运行时间很长的机会,并在完成之前再次调用.


(我也不够聪明,不能确定这个问题是否可以被标记为与语言无关,所以我没有.开明的读者,如果适用,请随意这样做.)

.net multithreading reentrancy

9
推荐指数
1
解决办法
3930
查看次数