小编L. *_*rdt的帖子

C#BeforeFieldInit Jon Skeet解释混乱

我通读乔恩斯基特的文章有关beforefieldinit,我偶然发现了一个问题.他提到可以在调用静态字段的第一次引用之前的任何时间调用类型初始值设定项.

这是我的测试代码:

class Test1
{
    public static string x1 = EchoAndReturn1("Init x1");

    public static string EchoAndReturn1(string s)
    {
        Console.WriteLine(s);
        return s;
    }
}

class Programm
{
    public static void Main()
    {
        Console.WriteLine("Starting Main");

        Test1.EchoAndReturn1("Echo 1");

        Console.WriteLine("After echo");

        string y = Test1.x1;  //marked line
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

Init x1
Starting Main
Echo 1
After echo
Run Code Online (Sandbox Code Playgroud)

但是没有标记的行,所以没有静态字段的调用x1,输出是:

Starting Main
Init x1
Echo 1
After echo
Run Code Online (Sandbox Code Playgroud)

因此,标记的对象beforefieldinit的调用会影响其类型初始值设定项的调用吗?或者这是否属于beforefieldinit他提到的奇怪效果?

因此,beforefieldinit可以使类型初始化程序的调用更加懒惰或更加渴望.

c# initialization

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

在 CefSharp 中使用 Angular2

我正在寻找一种Angular2CefSharp控件中运行我的应用程序并建立双向通信的方法。我给你举两个例子:

  1. 我的 Angular 应用程序中有一个按钮,并希望我的 CefSharp 输出一个消息框(仅作为示例)。我知道如何进入 javascript 代码,但我无法编译我的 AngularApp,如果你从 C# 添加一个类,因为它不知道这一点。

C#代码:

private void RegisterJsObjects()
{           
    _browser.RegisterJsObject("cefTestClass", new TestClass());
}

class TestClass
{
    public void csF(string message) 
    {
        MessageBox.Show(message, "#C", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
    }
}
Run Code Online (Sandbox Code Playgroud)

角度代码:

<button (click) ="cefTestClass.csF('text')"> C# Button </button>
Run Code Online (Sandbox Code Playgroud)
  1. 我想Angular从我的CefSharp应用程序中调用函数,因为它们在编译后得到不同的名称,我无法访问它们。

chromium chromium-embedded cefsharp angular

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

角度材质选项卡将图像添加到按钮

我是Angular的初学者.我尝试用Angular材料选项卡做一些事情.我将标签部分添加到图像,但该部分无效.有谁知道如何将图像添加到角度材料选项卡.请查看我的附图,了解我尝试实现的目标.

需要这样的

我的代码到目前为止(stackblitz demo)

我的代码部分:

<mat-tab-group mat-stretch-tabs class="example-stretched-tabs mat-elevation-z4">
  <mat-tab label="First"  style="background:url('/assets/img/school-01.png')"> Content 1 </mat-tab>
  <mat-tab label="Second"> Content 2 </mat-tab>
  <mat-tab label="Third"> Content 3 </mat-tab>
</mat-tab-group>
Run Code Online (Sandbox Code Playgroud)

CSS

.example-stretched-tabs {
  max-width: 800px;
}
/* active tab */
.mat-tab-list .mat-tab-labels .mat-tab-label-active {
  color:#0f2241;
  background-color: #535353;
  opacity: 1;
}

/* ink bar */
.mat-tab-group.mat-primary .mat-ink-bar {
  background: none;
  content: url('https://image.flaticon.com/icons/svg/60/60995.svg');
  height: 10px; 
}
Run Code Online (Sandbox Code Playgroud)

.TS

import {Component, ViewEncapsulation} from '@angular/core';

/**
 * @title Tab group with stretched labels
 */
@Component({
  selector: 'tab-group-stretched-example',
  templateUrl: 'tab-group-stretched-example.html',
  styleUrls: …
Run Code Online (Sandbox Code Playgroud)

tabs angular-material angular angular6

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

如何检查我是否在RichTextBox中删除(退格,删除或"剪切")UIElement?

我有一个RichTextBox必须包含一些按钮,当用户编辑其中的内容时,应该正确删除(处理).我能够检查我是否删除(退格,删除或剪切)文本(字符)而不是<Button>控制元素.

附上我使用过的代码:

XAML:

<RichTextBox x:Name="tRTB"
             HorizontalAlignment="Left"
             Keyboard.PreviewKeyDown="tRTB_PreviewKeyDown"
             PreviewTextInput="tRTB_PreviewTextInput">
   <local:EnabledFlowDocument x:Name="tFD">
      <Paragraph x:Name="tP"/>                 
   </local:EnabledFlowDocument>
</RichTextBox>
Run Code Online (Sandbox Code Playgroud)

C#:

public void AppendNewButton(int i)
{
    Button addB = new Button();
    addB.Content = i;
    addB.HorizontalAlignment = HorizontalAlignment.Left;

    tP.Inlines.Add(addB);
    tP.Inlines.Add("Bk" + i.ToString()); //appends a button and text in RTB
}
Run Code Online (Sandbox Code Playgroud)

和事件:

private void tRTB_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Back)
    {
        var start = tRTB.CaretPosition;
        var t = start.GetTextInRun(LogicalDirection.Backward);
        var end = start.GetNextContextPosition(LogicalDirection.Backward);
        var t1 = end.GetTextInRun(LogicalDirection.Backward);

        tRTB.Selection.Select(start, end);
        tRTB.Selection.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Black); …
Run Code Online (Sandbox Code Playgroud)

c# wpf richtextbox uielement

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

C# 获取 Firefox 中所有打开页面的 URL

我已经来过这里:

我知道已经有很多关于这个主题的问题,但没有一个能正确回答。我很好奇如何获取 Firefox 中所有打开页面的 URL,但我找不到提供工作代码的解决方案。

这是互联网上最有价值的解决方案,但它对我不起作用。此代码使用 DDE(它使用 NDDE - .NET 的一个很好的 DDE 包装器):

private string GetBrowserURL(string browser)
{
    try
    {
        DdeClient dde = new DdeClient(browser, "WWW_GetWindowInfo");
        dde.Connect();
        string url = dde.Request("URL", int.MaxValue);
        string[] text = url.Split(new string[] { "\",\"" }, StringSplitOptions.RemoveEmptyEntries);
        dde.Disconnect();
        return text[0].Substring(1);
    }
    catch
    {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不关心它是否显示历史记录、获取第二个 Firefox 窗口中打开页面的 URL,我现在想保持简单。请不要向我提供其他浏览器的代码,因为它始终是特定于浏览器的或任何 VB 代码。

c# url firefox

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

SQL DataReader 网络使用限制

我有这样的想法(不知道好坏)。我有实用程序,它通过 reglament 连接到 SQL Server 并将一些数据获取到应用程序。数据很简单(2 个 varchar 文本属性),但数据数量约为 300 万行。因此,我的应用程序非常频繁地使用网络。我可以通过编程方式减少(限制、节流等)SQL 的网络带宽使用吗DataReader?让它运行得更慢,但不要给服务器和客户端带来压力。这个主意好不好?如果没有,我必须做什么?

到目前为止,这是代码:

using (SqlConnection con = new SqlConnection("My connection string here"))
{
    con.Open();
    using (SqlCommand command = new SqlCommand(query, con))
    {                        
        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                yield return new MyDBObject()
                {                               
                    Date = (DateTime)reader["close_date"],                                
                    JsonResult = (string)reader["json_result"]
                };
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# sql-server datareader

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

价值和参考类型混淆

我在每个网站上都有关于这个主题的内容,并且通过Jon Skeets关于参考和值以及参数传递的文章阅读了过去几天.我理解这两种类型的概念,它们代表什么以及与Value和Reference参数的区别是什么是另一种规范.

我理解这是如何工作的,以及如何使用它,但我不明白有人在谈论这个话题.你们所有人都说,例如int是一个值类型,并且string是一个引用类型.但根据我的理解,类型基本上只取决于它们被声明的类的类型.

看看这段代码片段,了解我的意思:

public struct IntHolder
{
   public int number;
}

IntHolder first = new IntHolder();
first.number = 5;
IntHolder second = first;
first.number = 6;
Run Code Online (Sandbox Code Playgroud)

现在second.number值为5.如果你struct改为class,number就会像引用类型一样,所以int在generell中根本不是一个值类型,它只是类的类型.同样的例子也适用于string......

显然,声明对象的类的类型设置了对象的类型,或者我错过了一个核心概念.请纠正我并帮助我理解它是正确的,或者告诉我这背后的意义是什么int string......等等......即使它们初始化时无关紧要,所以基本上总是如此.

c# value-type reference-type

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

C# 正则表达式 split() 不删除分割条件字符

我正在string使用正则表达式的Split()方法来拆分 a 。

var splitRegex = new Regex(@"[\s|{]");

string input = "/Tests/ShowMessage { 'Text': 'foo' }";

//second version of the input: 
//string input = "/Tests/ShowMessage{ 'Text': 'foo' }";

string[] splittedText = splitRegex.Split(input, 2);
Run Code Online (Sandbox Code Playgroud)

string只是输入的示例模式。有两种不同的结构input,一种是前面有空格{,另一种是没有空格。我想拆分input括号{以获得以下结果:

  • /测试/显示消息
  • { '文本': 'foo' }

如果有空格,字符串会在那里被分割(空格被删除),我会得到我想要的结果。但是,如果没有空格,我会拆分 上的字符串{,因此{会被删除,但这是我不想要的。如何Regex.Split()在不删除分割条件字符的情况下使用?

c# regex string split

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

Graphics.SmoothingMode 的奇怪行为

我创建了一个Bitmap并在其上绘制了一个简单的stringRectangle。此外,我graphics设置SmoothingModeAntiAlias

orgBitmap = new Bitmap(250, 250);

using (Graphics graphics = Graphics.FromImage(orgBitmap))
{
    graphics.SmoothingMode = SmoothingMode.AntiAlias;

    Rectangle rect = new Rectangle(30, 30, 150, 200);
    graphics.FillRectangle(Brushes.Red, rect);

    using (Pen pen = new Pen(Color.Green, 5))
    {
        graphics.DrawRectangle(pen, rect);
    }

    graphics.DrawString("Test Test Test Test", new Font("Arial", 20, FontStyle.Regular), Brushes.Black, 35, 35);
}
Run Code Online (Sandbox Code Playgroud)

这显示了一些意外的行为,因为并非所有图形都已消除锯齿。不知何故,抗锯齿仅限于位于 的区域中的所有图形Rectangles。在该区域之外绘制的内容string没有进行抗锯齿处理,我想知道为什么。这是一个错误还是我该如何修复它?

在此输入图像描述

c# graphics antialiasing

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

域名正则表达式包括 IDN 字符 c#

我希望我的域名不包含超过一个连续的(.)\'/\'任何其他特殊字符。但它可以包含 IDN 字符,例如\xc3\x81, \xc5\x9b, etc... 我可以使用此正则表达式来满足所有要求(IDN 除外):

\n\n
@"^(?:[a-zA-Z0-9][a-zA-Z0-9-_]*\\.)+[a-zA-Z0-9]{2,}$";\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题是这个正则表达式也拒绝 IDN 字符。我想要一个允许 IDN 字符的正则表达式。我做了很多研究,但我无法弄清楚。

\n

c# regex idn web

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

无法为属性分配新值

我说的是房产PageSettings.PrinterResolution.根据MSDN,该属性具有setter与属性相同的属性PrinterResolution.X,即使我无法为其设置新值.该属性仍然包含它的早期值,而不是新分配的值.

PrintDocument pd = new PrintDocument();    
//assigning a printer to `pd`, etc...

//premise: pd.DefaultPageSettings.PrinterResolution.X has currently the value 200
Run Code Online (Sandbox Code Playgroud)

现在我尝试为以下内容分配一个新intX:

pd.DefaultPageSettings.PrinterResolution.X = 300;
Run Code Online (Sandbox Code Playgroud)

但检查后它的值pd.DefaultPageSettings.PrinterResolution.X仍然包含200.我只是想出了分配新的PrinterResolution与设定值对象X,并Ypd.DefaultPageSettings.PrinterResolution该值更改为我的需求.

PrinterResolution changedRes = new PrinterResolution();
changedRes.X = 200;
changedRes.Y = 200;

pd.DefaultPageSettings.PrinterResolution = changedRes;
Run Code Online (Sandbox Code Playgroud)

那么为什么我不能设置属性的值呢?特别是为什么有记录,setter即使它不是"可用的".

c# properties

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

c#中的成员初始化

我有两节课,class Aclass B.

public class A
{ 
    public int someNumber;

    public A(int a)
    {
        someNumber = a; 
    }
}
Run Code Online (Sandbox Code Playgroud)

现在class B有一个对象的字段class A.在C++中,可以这样做:

public class B
{
    public A foo;

    public B(int a) : foo(a) { }
}
Run Code Online (Sandbox Code Playgroud)

但这在C#中不起作用.那么如何在不使用默认构造函数的情况下在C#中解决这个问题呢class A?更准确地说,如何编写一个构造函数class B作为参数的someNumberfoo

c#

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