小编Nul*_*ull的帖子

C#中的"<>"语法是什么

我一直在学习C#的基础知识,但没有得到一个很好的解释:

var l = new List<string>();
Run Code Online (Sandbox Code Playgroud)

我不知道<string>它在做什么,或者它List是否正在做魔术.我也看到过< >标签中抛出的对象.

有人可以用例子向我解释一下吗?

.net c#

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

维基百科的单例模式实现

我指的是维基百科上Bill Pugh的Singleton Pattern解决方案:

public class Singleton
{

    // Private constructor prevents instantiation from other classes

    private Singleton() {}

     /**
    * SingletonHolder is loaded on the first execution of Singleton.getInstance() 
    * or the first access to SingletonHolder.INSTANCE, not before.
    */

    private static class SingletonHolder 
    { 

        private static final Singleton INSTANCE = new Singleton();
    }

   public static Singleton getInstance()
   {

       return SingletonHolder.INSTANCE;
   }

}
Run Code Online (Sandbox Code Playgroud)

他们在这里提到:

内部类之前没有引用(因此不会被类加载器加载),而不是getInstance()被调用的时刻.因此,该解决方案是线程安全的,无需特殊的语言结构(即volatilesynchronized).

但是,2个线程是否有可能getInstance()同时调用,这会导致创建两个单例实例?synchronized在这里使用不安全吗?如果是,那么它应该在代码中使用的位置?

java singleton design-patterns

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

C#CF:如何使用我的程序打开特定的文件扩展名

我正在开发.Net Compact Framework中的移动应用程序.我设法编辑注册表HKEY_CLASSES_ROOT,以便点击具有.xyz扩展名的文件将打开我的应用程序.基本上,我需要在单击该文件时对该文件进行一些操作.

但是,我意识到,如果我第一次这样做,它会到达program.cs static void Main.但是当程序运行时,我再次单击带有.xyz扩展名的文件时,它不会加载程序static void Main.我尝试在当前运行的表单中设置断点但仍然没有.

那它去哪了?如何检测文件.xyz被点击并做一些事情?

c# compact-framework

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

C#属性问题

前几天我碰到了一些关于C#属性的问题.

假设我有这个设置:

public class Point
{
 public float X;
 public float Y;
}

public class Control
{
 protected Point m_Position = new Point();

 public Point Position
 {
  get { return m_Position; }
  set 
  { 
    m_Position = value; }
    // reorganize internal structure..
    reorganize();
  }

  protected reorganize()
  {
   // do some stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但在使用方面,我可以这样写:

Control myControl = new Control();
myControl.Position.X = 1.0f;
Run Code Online (Sandbox Code Playgroud)

问题是,我的Control班级不会认识到Position因为set()没有被调用而已经改变了.

有没有办法让人Control知道任何Position变化?

c# class-design properties

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

构造函数是如何执行的?

我正在从演讲幻灯片中做一些修改,它说构造函数以下列方式执行:

  1. 如果构造函数以此开头,则递归执行指示的构造函数,然后转到步骤4.

  2. 调用显式或隐式指示的超类构造函数(除非此类是java.lang.Object).

  3. 按照在此类中声明它们的顺序初始化对象的字段.

  4. 执行此构造函数的其余部分.

我不明白的是构造函数永远不会"启动"它,因为即使它没有形成类层次结构/关系,默认情况下插入super().

这与上面的描述有什么关系?

java jvm initialization

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

如何创建和维护多语言项目?

我打算在C#中创建一个多语言应用程序,并想知道处理以下内容的最佳方法是什么:

  • 语言的容器;
  • 一旦启动/请求,读取/更改的最佳方法;
  • 随着程序的增长,每种语言的文本也会如此,您通常会做什么,并建议作为最佳实践;
  • 在进行此类应用程序时遇到了哪些问题;

感谢您的任何建议,回复等.

我非常感谢链接和示例代码,如果它不是太麻烦(不是必需的,只有你有时间和可以).

c# multilingual containers desktop-application

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

索引切换语句,或等效?.net,C#

我想构建一个接受字符串参数的方法,以及一个我想根据参数返回特定成员的对象.所以,最简单的方法是构建一个switch语句:

public GetMemberByName(MyObject myobj, string name)
{
   switch(name){
     case "PropOne": return myobj.prop1;
     case "PropTwo": return myobj.prop2; 
   }
}
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但我最终可能会找到一个相当大的列表...所以我很好奇是否有一种方法,没有编写一堆嵌套的if-else结构,以索引方式实现这一点,以便匹配字段通过索引找到而不是通过开关掉落直到找到匹配.

我考虑使用a Dictionary<string, something>来快速访问匹配的字符串(作为关键成员),但由于我想访问传入对象的成员,我不确定如何实现.

  • 我特意试图避免反射等,以便实现非常快速.我可能会使用代码生成,所以解决方案不需要小/紧等.

  • 我最初正在构建一个字典,但每个对象都在初始化它.所以我开始将它移动到一个方法,可以根据键 - 一个switch语句查找值.但由于我不再编入索引,我担心调用此方法的连续查找会很慢.

  • SO:我正在寻找一种方法来结合索引/散列查找(如字典使用)的性能与返回传入对象的特定属性.我可能会将它放在用于它的每个类中的静态方法中.

c# dictionary switch-statement

6
推荐指数
3
解决办法
1152
查看次数

如何在C#/ .NET 4.0中编写带有delegate参数的方法?

我一直在使用我在类级别声明委托的方式:

protected delegate void FieldsDelegate();

//and then write a method e.g.

protected int CreateComponent(DbConnection cnctn, string tableName, Dictionary<string, object> changedFieldValues, FieldsDelegate fieldsDelegate)
Run Code Online (Sandbox Code Playgroud)

然而,这真的很麻烦,我无法立即看到代表是什么样的.所以我想这样做:

protected int CreateComponent(DbConnection cnctn, string tableName, Dictionary<string, object> changedFieldValues, delegate void fieldsDelegate())
Run Code Online (Sandbox Code Playgroud)

所以我没有单独的定义.

由于某种原因,不允许上述内容.那我该怎么办呢?

.net c# delegates

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

分区不跨越字节

我试图对uint128_t由2 uint64_t秒组成的分区进行分区.奇怪的是,该函数适用于uint64_ts,只有较低的值集和较高的值= 0.我不明白为什么.

这是除法和位移的代码

class uint128_t{
   private:
      uint64_t UPPER, LOWER;
   public:
      // lots of stuff

    uint128_t operator<<(int shift){
        uint128_t out;
        if (shift >= 128)
            out = uint128_t(0, 0);
        else if ((128 > shift) && (shift >= 64))
            out = uint128_t(LOWER << (64 - shift), 0);
        else if (shift < 64)
            out = uint128_t((UPPER << shift) + (LOWER >> (64 - shift)), LOWER << shift);
        return out;
    }

    uint128_t operator<<=(int shift){
        *this = *this << shift; …
Run Code Online (Sandbox Code Playgroud)

c++ math biginteger integer-division

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

什么是XPS文件以及如何使用它们

我有一个简单的C#.net Web应用程序.我正在使用XPS文件.我使用了以下代码

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string xpsFile = "D:\\Completed-Form.xps";
                xpsToBmp(xpsFile);
                MessageBox.Show("Done");
            }
            catch (Exception ex)
            {
                MessageBox.Show (ex.Message);
            }
        }

        static public void xpsToBmp(string xpsFile)
        {
            XpsDocument xps = new XpsDocument(xpsFile, System.IO.FileAccess.Read);
            FixedDocumentSequence sequence = xps.GetFixedDocumentSequence();

            for (int pageCount = 0; pageCount < sequence.DocumentPaginator.PageCount; ++pageCount)
            {
                DocumentPage page = sequence.DocumentPaginator.GetPage(pageCount);
                RenderTargetBitmap toBitmap = new RenderTargetBitmap((int)page.Size.Width,(int)page.Size.Height,96,96,System.Windows.Media.PixelFormats.Default);

                toBitmap.Render(page.Visual);

                BitmapEncoder bmpEncoder = new BmpBitmapEncoder();
                bmpEncoder.Frames.Add(BitmapFrame.Create(toBitmap));

                FileStream fStream = new FileStream("D:\\xpstobmp" + pageCount + ".bmp", FileMode.Create, FileAccess.Write);
                bmpEncoder.Save(fStream); …
Run Code Online (Sandbox Code Playgroud)

.net c# web-applications xps bmp

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