小编Moh*_*kar的帖子

为什么C#无法将两种对象类型相互比较,但VB却没有?

我在C#中有两个对象,不知道它是布尔值还是其他任何类型.但是,当我尝试比较那些C#未能给出正确答案时.我用VB.NET尝试了相同的代码并且做到了!

如果有解决方案,谁能告诉我如何解决这个问题?

C#:

object a = true;
object b = true;
object c = false;
if (a == b) c = true;
MessageBox.Show(c.ToString()); //Outputs False !!
Run Code Online (Sandbox Code Playgroud)

VB.NET:

Dim a As Object = True
Dim b As Object = True
Dim c As Object = False
If (a = b) Then c = True
MessageBox.Show(c.ToString()) '// Outputs True
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net comparison

152
推荐指数
2
解决办法
5751
查看次数

为什么我不能在lambda表达式中使用null传播运算符?

我经常在我的代码中使用null传播运算符,因为它给了我更多可读代码,特别是在长查询中我不必对每个使用的类进行空值检查.

以下代码抛出一个编译错误,我们不能在lambda中使用null传播运算符.

var cnt = humans.AsQueryable().Count(a => a.House?[0].Price == 5000);
Run Code Online (Sandbox Code Playgroud)

错误 :

错误CS8072表达式树lambda可能不包含空传播运算符.

C#如果真的不能做任何其他事情,可以轻松地将上面的代码转换为代码到下面的代码!

var cnt = humans.AsQueryable().Count(a => a.House != null && a.House[0].Price == 5000);
Run Code Online (Sandbox Code Playgroud)

我很好奇为什么C#什么也不做,只是抛出一个编译器错误?

.net c# compiler-errors c#-6.0 null-propagation-operator

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

如何在C++ 11中传递和执行匿名函数作为参数?

我正在寻找的代码如下.

bool Func1(int Arg1, C++11LambdaFunc Arg2){
    if(Arg1 > 0){
        return Arg2(Arg1);
    }
}
Run Code Online (Sandbox Code Playgroud)

稍后我将使用此代码.

Func1(12, [](int D) -> bool { ... } );
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++ c++11

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

为什么C++ CLI在托管类型上没有默认参数?

以下行有错误Default argument is not allowed.

public ref class SPlayerObj{
private:

    void k(int s = 0){ //ERROR
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么C++在托管类型上没有默认参数?
我想知道是否有办法解决这个问题.

c++-cli visual-c++ default-parameters

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

C#编译器在没有错误消息的情况下崩溃

var xrr = __arglist(Convert.ToUInt32(1), 
                    Convert.ToUInt32(2), 
                    Convert.ToUInt32(3));
Run Code Online (Sandbox Code Playgroud)

上面的代码会使编译器在构建时崩溃.我希望编译器停止使用有意义的错误消息,而不是尝试编译代码.它可能是编译器中的错误吗?如果没有,我该如何解决这个错误?

.net c#

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

为什么C#6.0在使用Null传播运算符时不允许设置非null可空结构的属性?

假设我们有以下代码:

struct Article
{
    public string Prop1 { get; set; }
}

Article? art = new Article();
art?.Prop1 = "Hi"; // compile-error
Run Code Online (Sandbox Code Playgroud)

编译错误是

CS0131赋值的左侧必须是变量,属性或索引器.

实际上art?.Prop1是一个属性,应该被视为一个有效的任务!
我没有看到任何分配使这段代码无效的问题.

为什么C#6.0不允许设置非null可空结构的属性?
或者,任何建议一个行代码使分配有效将不胜感激.

c# compiler-errors c#-6.0

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

如何将默认值初始化为C#7输出变量?

我曾经用TryParse字符串解析数字.我需要一个解决方案来初始化变量的默认值,所以当TryParse无法转换时,我得到我的默认值.

这是代码:

long.TryParse(input.Code, out long Code = 123);
//Error CS1525  Invalid expression term '=' 
Run Code Online (Sandbox Code Playgroud)

我想严格使用C#7输出变量标准.

c# c#-7.0

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

为什么C++不允许我使用typeof?

我正在使用以下代码与C++ 11并得到一个我不允许使用的错误typeof!

有什么问题以及如何解决这个问题?

错误 :

Error   10  error C2923: 'typeof' is not a valid template type argument for parameter 'C'
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

#define HIBERLITE_NVP(Field) hiberlite::sql_nvp< typeof(Field) >(#Field,Field)


class Person{
friend class hiberlite::access;
template<class Archive>
void hibernate(Archive & ar)
{
    ar & HIBERLITE_NVP(name); //ERROR
    ar & HIBERLITE_NVP(age);  //ERROR
    ar & HIBERLITE_NVP(bio);  //ERROR
}
public:
string name;
double age;
vector<string> bio;
};
Run Code Online (Sandbox Code Playgroud)

sql_nvp是这样的:

template<class C>
 class sql_nvp{
public:
    std::string name;
    C& value;
    std::string search_key;

    sql_nvp(std::string _name, C& _value, std::string search="") : …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++ c++11

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

如何在WebBrowser控件上使用DrawToBitmap修复不透明度错误?

根据以下链接和我的控制台应用程序,该方法DrawToBitmap不尊重不透明度.

证明链接:http: //social.msdn.microsoft.com/Forums/vstudio/en-US/e9704309-0c52-442d-80e0-2f8393dcd313/webbrowser-opacity-problem-

我的HTML代码:http://fiddle.jshell.net/L37TC/

<div id="fader" style="background-color: #ff0000">ffff</div>
<div style="background-color: blue;  opacity:0;filter:alpha(opacity=0);">HIDDEN TEXT!</div>
SomeText 
Run Code Online (Sandbox Code Playgroud)

我的C#控制台代码:

var bmp = new  Bitmap(640,480, PixelFormat::Format32bppArgb)
var web = (System.Windows.Forms.Control)sender;
web.DrawToBitmap(bmp, Rectangle(0, 0, 640,480));
Run Code Online (Sandbox Code Playgroud)

所以我正在寻找替代的.NET内置解决方案(没有CEF,Awesomium,或任何扩展)只是.NET的内置功能来修复错误或替代解决方案,以在我的控制台中截取Web URL的屏幕截图应用.

如果我让WebBrowser窗口对我的客户端可见并且使用CopyFromScreen不透明度并且HIDDEN TEXT没有显示,那么我怎么不想让WebBrowser窗口对桌面屏幕可见.

我正在寻找一个内置的解决方案,可以在没有问题的情况下从发布的URL中截取屏幕截图HIDDEN TEXT.换句话说,是尊重opacity的解决方案.

EDIT1:我的所有像素Bitmap class(.NET类不是BMP格式)的alpha值为255.所以问题不在于文件格式.我尝试过PNG和任何其他.NET支持的格式.

完整的源代码(控制台模板,需要添加引用System.DrawingSystem.Windows.Forms

class Program
{
    static System.Windows.Forms.WebBrowser w = new System.Windows.Forms.WebBrowser();

    [STAThread]
    static void Main(string[] args) …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net webbrowser-control

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

冻结部分代码以防止格式化

有没有办法在Visual Studio中锁定或冻结部分代码以防止格式化?

我想保护以下代码:

Method("This is a long text", 12 , true  );
Method("Hi",                  558, true  );
Method("Short text",          1  , false );
Run Code Online (Sandbox Code Playgroud)

格式化为:

Method("This is a long text", 12, true);
Method("Hi", 558, true);
Method("Short text", 1, false);
Run Code Online (Sandbox Code Playgroud)

但仍然能够格式化文档的其余部分.

c# vb.net visual-studio

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