标签: clr

VB.NET奇怪的IF语句行为,总是别的

我试过这两个块,但它返回相同的值.我没有描述更多,我只是展示代码:

    Dim f As Nullable(Of Integer)
    If f = 1 Then
        Console.WriteLine("Equal")
    Else
        Console.WriteLine("Not Equal")
    End If
Run Code Online (Sandbox Code Playgroud)

它提示我"不等于"

我只是添加了一个NOT,我想要得到NOT答案,但我和上面一样!

    Dim f As Nullable(Of Integer)
    If Not f = 1 Then
        Console.WriteLine("Equal")
    Else
        Console.WriteLine("Not Equal")
    End If
Run Code Online (Sandbox Code Playgroud)

它正确地在C#中工作......

.net c# vb.net clr nullable

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

如何将程序集设置为默认引用?

对于每个新创建的C#项目,Visual Studio 2010都添加了一些默认引用,例如System,System.Core,System.Xml等.这些默认引用的好处是您可以直接使用它们而无需手动添加它们.

我想知道是否有办法添加第三方程序集作为默认引用,这样我每次创建项目时都不需要添加它.

c# clr visual-studio

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

JVM/CLR上相同字节的不同浮点值

我正在将最初用VB.NET编写的程序移植到Java.我正在读取一个以小端序存储32位浮点数的文件.

原始程序执行此操作:

Dim br As BinaryReader = ...
Dim f_vb As Single = br.ReadSingle
Run Code Online (Sandbox Code Playgroud)

Java是大端,所以我在转换为float之前反转字节.

RandomAccessFile raf = // ...
int i = raf.readInt();
int bigEndian = Integer.reverseBytes(i);
float f_java = Float.intBitsToFloat(bigEndian);
Run Code Online (Sandbox Code Playgroud)

据我所知,f_vbf_java包含相同的位.也就是说,BitConverter.ToInt32on f_vbFloat.floatToIntBits(和floatToRawIntBits)on f_java给出相同的东西.但是,花车并不相同.例如,让我们bigEndian == 0x4969F52F.Java将报告958290.94,VB.NET将报告958290.938.我猜这是因为JVM和CLR处理浮点数的方式有所不同,但我对浮点问题知之甚少以找出原因.这种精度的损失导致了线路故障,所以我想确定来源.

java vb.net floating-point clr jvm

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

如何在Visual C++ 2008 Managed中创建具有一个或多个函数的类模块

我是Visual C++的绝对新手,因此我不得不问你,如何在托管C++项目(Visual Studio 2008)中创建一个带有一个或多个函数的托管类模块(新类)?如果按下按钮,我将如何调用类的方法.我无法理解关于它的非常复杂的教程,大多数教程都涉及非托管代码或旧版Visual Studio.我自己的尝试完全失败并且只产生了错误,因为我没有找到关于如何向Visual C++托管项目添加新类文件的正确选项.如果我选择一个新的"CLR组件类",我会收到一条警告消息,告诉我填充屏幕右侧窗格的组件.如果我选择一个新的"CLR Windows Form Class",它什么都不会发生,没有添加扩展名为".class"的文件,或者我不知道新添加的文件.我只需要一个非常基本的类文件,其中包含一个公共函数,我可以从项目的任何位置调用它.

我有一个非常大的main()cpp文件(main.cpp),里面有很多函数.大约有几千个函数或更多函数,因此搜索或滚动变得困难.现在我想将这些1000个函数中的一些放在我当前项目中的第二个cpp文件中(在Visual Basic 6中,它简称为CSharp中的"新模块",它被称为"新类文件").问题是,一旦我将它们从main.cpp移到module1.cpp,我就无法在Visual C++中调用这个函数.

这就是我不想要的:

  • 一个DLL
  • 第二个项目
  • 添加对某事物的引用(在项目/参考文献中)
  • 双重声明

我知道有一种方法可以创建一个简单的类,然后创建一个这个类的新对象来使用它的方法.这就是我想要的.Google中关于此的示例对我不起作用,因为它们适用于Visual Studio的早期版本,与我的版本不兼容.从这个例子我知道我想要什么,但我没有在Visual Studio 2008中实现它的知识.

clr managed class function visual-c++

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

锁定属性

我想知道在属性中正确使用锁.我正在编写一个多线程服务器应用程序,其中吞吐量非常重要.如果我有一个声明的属性:

    private DataPoint a;
    private object aLock = new object();
Run Code Online (Sandbox Code Playgroud)

最保守的锁似乎如下(称之为方法1).但是,在这种情况下,在初始调用之后的每次调用中,都会有锁的开销:

    public DataPoint A
    {
        get
        {
            lock (aLock)
            {
                if (a == null)
                {
                    a = new DataPoint();
                }

                return a;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

或者,我应该将锁定移动到设置"a"的行(称之为方法2).在这种情况下,有可能将"a"设置多次(这是Ok),但是一旦设置,就没有锁的开销.

    public DataPoint A
    {
        get
        {
            if (a == null)
            {
                lock(aLock)
                {
                    a = new DataPoint();
                }
            }

            return a;
        }
    }
Run Code Online (Sandbox Code Playgroud)

锁定并发访问属性的推荐方法是什么?它是方法1,方法2还是以上都没有?

谢谢.

.net c# clr concurrency multithreading

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

.NET功能和C#功能有什么区别?(请举例)

我觉得这经常被误解,我总是在两者之间感到困惑.当我们说CLR功能(.NET功能)或C#功能时,它们是相同的还是不同的

编辑:我觉得大多数人都误解了我的问题.我不是要问C#和.NET之间的核心区别,而是对功能明智的分类并不感兴趣.像垃圾收集是CLR功能或匿名类型是语言功能,依此类推

.net c# clr

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

从C#CLR快速插入

我正在处理大量数据,并使用CLR进行处理.CLR处理工作很快,但我需要一种快速方法将处理后的数据移动到数据库(通过CLR).

例如,请参阅以下clr代码

protected static string Normalize(string s) // space and special character remover
    {
        char[] arr = s.ToCharArray();
        arr = Array.FindAll<char>(arr, (c => char.IsLetterOrDigit(c)));
        return new string(arr).ToLower();
    }

    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void udpNormStr ()
    {
        SqlConnection con = new SqlConnection("context connection = true");
        SqlCommand cmd = new SqlCommand("Select cName from NamesTable", con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        DataTable fill = new DataTable();
        fill.Columns.Add("NormName", typeof(string));
        da.Fill(dt);
        cmd.CommandText = "insert into NormTable values (@nName)";
        cmd.Parameters.Add("@nName", SqlDbType.VarChar);
        foreach …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server clr bulkinsert

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

NGen和通用集合.如何摆脱Jitting?

我正在努力研究ngen和泛型集合.我已经在解决方案中使用了所有程序集,但是每当我的应用程序执行该代码时,仍会以某种方式进行jitting:

private Dictionary<int, bool> VerifyedFunc; 

public SecurityProvider()
{
    ...
    VerifyedFunc = new Dictionary<int, bool>();
    ...       
}
Run Code Online (Sandbox Code Playgroud)

MDA消息:

Managed Debugging Assistant 'JitCompilationStart' has detected a problem in '*.exe'.
Additional Information: 
<mda:msg xmlns:mda="http://schemas.microsoft.com/CLR/2004/10/mda">
<mda:jitCompilationStartMsg break="true">
<method name="mscorlib!System.Collections.Generic.Dictionary`2::.ctor"/>
</mda:jitCompilationStartMsg>
</mda:msg>
Run Code Online (Sandbox Code Playgroud)

NGen和泛型集合是否存在一些问题?

.net clr optimization ngen winforms

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

为什么C#在转发后将实例的先前非null成员视为null?

在开发用于通过JSON与外部数据库通信的类库时,出现了一个有趣的问题,即对象实例的向上转换导致其先前的非空成员之一显示为null.

在试图弄清楚这种奇怪的原因时,许多头发被撕掉了,但到目前为止,我找不到合理的解释是不成功的.

以下是此问题的示例:

using System;
namespace Test
{
    public class Program
    {
        static void Main(string[] args)
        {
            Descendant d = new Descendant();
            d.Attributes.ToString(); // Everything fine here
            Ancestor a = (Ancestor)d;
            a.Attributes.ToString(); // NullPointerException
        }
    }

    class Ancestor
    {
        public interface IAttributes { }
        public IAttributes Attributes;
    }

    class Descendant : Ancestor
    {
        public new DescendantAttributes Attributes;

        public Descendant()
        {
            this.Attributes = new DescendantAttributes();
        }

        public class DescendantAttributes : IAttributes
        {
            public string Name = "";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

错误消息: …

.net c# clr inheritance

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

像Java一样在.NET中进行堆外存储?

.NET及其任何运行时(CLR,DLR)是否像Java一样支持堆外存储?

.net clr

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