小编Ale*_*lex的帖子

const与readonly

今天我发现了一篇文章,其中一个const字段称为编译时常量,而一个readonly字段称为运行时常量.这两个短语来自"Effective C#".我在MSDN和语言规范中搜索,找不到运行时常量.

没有攻击性,但我不认为运行时常量是一个恰当的短语.

private readonly string foo = "bar";
Run Code Online (Sandbox Code Playgroud)

创建一个名为"foo"的变量,其值为"bar",值为readonly,这里它是一个变量,没有业务constant.只读变量仍然是变量,它不能是常量.变量和常量是互斥的.

也许这个问题太过分了,我还是想听听别人的意见.你怎么看?

.net c# const readonly

8
推荐指数
2
解决办法
7805
查看次数

使用JKS和/或PFX证书从C#客户端调用Java Web服务

我基本上需要确保我对这项服务的要求.

我已经提供了一个JAR测试客户端和两个文件,trust.jks以及Client.pfx,但我不知道如何使用它们:我明白X509Certificate2类是参与了一些办法.

执行测试客户端的命令行如下:

java -Djavax.net.ssl.trustStore=trust.jks -Djavax.net.ssl.trustStorePassword=******** -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.keyStore=Client.pfx -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=******** -jar TestClient.jar https://myServiceurl
Run Code Online (Sandbox Code Playgroud)

它工作正常,所以我都可以看到服务,并且应该正确配置服务本身.

我的C#客户端(它的目标是.NET 2.0)使用普通的Web引用来执行请求:

wsReferenceClient service = new wsReferenceClient();
//certificate code here ?
//maybe service.ClientCertificates.Add(<X509Certificate2 object built somehow>); ?
service.MyRequest(myParameters);
Run Code Online (Sandbox Code Playgroud)

应正确设置服务器设置.

我摸索着这些X509Certificate2方法,但我不能拿出一些有意义的东西,所以答案是"你试过了什么?" 现在的问题是"我真的不知道首先要尝试什么".

任何帮助将非常感激.

c# java ssl certificate request

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

通用显式转换失败C#

我对以下代码有一些问题.我想将一个字符串显式化为一个对象,这是完全正常的,但是,如果此对象是泛型类的一部分,则失败并出现以下错误异常:"无法转换类型为'System.String'的对象'输入'test.B'".即使我已经重载了该方法.

using System;
using System.Collections.Generic;

namespace test {
    class Program {
        static void Main(string [] args) {
            // These two cast perfectly fine.
            B x = (B) "abc";
            C y = (C) "def";

            A <B> a = new A<B>();
            a.b();
            A <C> b = new A<C>();
            b.b();
        }
    }

    class A<T> {
        public List <T> a = new List<T>();

        public void b() {
            // Unable to cast object of type 'System.String' to type 'test.B'
            this.a.Add ((T) (object) "abc"); 
            this.a.Add ((T) …
Run Code Online (Sandbox Code Playgroud)

c# generics casting explicit

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

清除预先输入字段

如何清除focusout事件中的预先输入字段?

以下 jQuery 代码似乎在预先输入字段中不起作用:

$( "#field" ).focusout(function() {
    $(this).val("");
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery typeahead.js

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

System.Data.SQLite对System.Int32错误地键入了无符号的int字段

使用System.Data.SQLite,我正在创建一个包含无符号整数列的表:

@"CREATE TABLE widgets (" +
    @"id unsigned integer(10) PRIMARY KEY, " +
    @"fkey unsigned integer(10), " + ...
Run Code Online (Sandbox Code Playgroud)

然后插入像这样的值

INSERT INTO widgets (id, fkey, ...) VALUES (4294967295, 3456, ...
Run Code Online (Sandbox Code Playgroud)

但是,循环遍历此表的行和列,我发现它row["id"]具有类型System.Int32(而不是UInt32),并且毫不奇怪,4294967295被解释为-1.实际上,表中的所有unsigned int字段(不仅主键id被错误地键入System.Int32)

同时,SQLite类型规范说整数存储在1,2,3,4,6或8个字节中,具体取决于值的大小.4294967295 = 0xFFFFFFFF只适合四个字节.它似乎与SQLite的所谓"动态类型"不一致.当我插入大于4294967295的正值时,类型仍然存在System.Int32.

这是一个错误还是一个功能?

PS1:

我的表包含1行,列id = 2 ^ 32-1 = 4294967295(或更大),我打印所有列的类型

public void PrintDataTypes(DataTable dt) {
    foreach (DataRow row in dt.Rows) {
        foreach (DataColumn col in dt.Columns)
            Console.WriteLine("name={0}, type={1}", 
                               col.ToString(),
                               row[col].GetType().ToString());
        return; // after 1st …
Run Code Online (Sandbox Code Playgroud)

c# sqlite unsigned-integer

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

我是否需要取消订阅ac#metro应用程序中的活动?

我已经订阅各种事件OnNavigatedTo

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    Loaded += Screen_Loaded;
}
Run Code Online (Sandbox Code Playgroud)

我没有取消订阅此活动.不需要此页面时是否会导致内存问题?

c# microsoft-metro windows-8

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

LINQ:按最常见值排序

我正在尝试在c#中创建一个"有序"对象列表,其中列表将按ImdbId属性中最常见的值排序.我没有使用数据库我从列表中的远程api获得结果,我只需要以优雅的方式对列表进行排序.

class Movie
{
String ImdbId {get; set; }
String Name {get;set;}
    ... more properties
}
Run Code Online (Sandbox Code Playgroud)

未排序列表的示例:

imdbId  | Name
698649  | "Sex and the City" Models and Mortals
698669  | "Sex and the City" The Awful Truth
698649  | "Sex and the City" Models and Mortals
698649  | "Sex and the City" Models and Mortals
698679  | "Sex and the City" The Drought
698697  | "Sex and the City" Valley of the Twenty-Something Guys
1568911 | War Horse
Run Code Online (Sandbox Code Playgroud)

排序应该如下所示: …

c# linq lambda

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

如何使用NLog在我当前的目录中创建文本文件?

我是第一次使用Nlog.我的目标是只写一个文本文件.

在main.c我有

class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();

static void Main(string[] args)
{
        logger.Trace("Sample trace message");
        logger.Debug("Sample debug message");
        logger.Info("Sample informational message");
        logger.Warn("Sample warning message");
        logger.Error("Sample error message");
        logger.Fatal("Sample fatal error message");
    }
}
Run Code Online (Sandbox Code Playgroud)

我的Nlog.config文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <targets>
        <target name="logfile" xsi:type="File" fileName="file.txt" />
    </targets>

    <rules>
        <logger name="*" minlevel="Info" writeTo="logfile" />
    </rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)

但是我无法在当前目录中创建txt文件.

c# console nlog

5
推荐指数
3
解决办法
6617
查看次数

应用程序在调试模式下运行非常慢

我的C#程序应该每秒执行30次异步任务.

该程序作为独立的Windows应用程序运行良好.

但是当它在Visual Studio 2013 Professional环境中以调试模式运行时,性能非常差 - 每秒只有5个任务,即使代码中没有断点也是如此.

缓慢调试VS.Net 2013的"功能"是否有办法调试时间关键的C#应用​​程序?

c# debugging performance visual-studio-2013

5
推荐指数
2
解决办法
4784
查看次数

CRM 2013:使用业务规则更新只读字段值

我正在尝试使用CRM 2013中的业务规则功能基于另一个字段计算日期字段值.该字段被锁定在表单上,​​以便用户无法修改.我认为由于这个设置,字段值最初设置为赌注,但是当我点击"保存"按钮时,该值消失.

我认为这与setSubmitMode("always")只读字段的问题相同.我想知道是否有办法在业务规则或表单/字段设置中解决此问题?

dynamics-crm dynamics-crm-2013

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