我通读乔恩斯基特的文章有关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可以使类型初始化程序的调用更加懒惰或更加渴望.
我正在寻找一种Angular2
在CefSharp
控件中运行我的应用程序并建立双向通信的方法。我给你举两个例子:
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)
Angular
从我的CefSharp
应用程序中调用函数,因为它们在编译后得到不同的名称,我无法访问它们。我是Angular的初学者.我尝试用Angular材料选项卡做一些事情.我将标签部分添加到图像,但该部分无效.有谁知道如何将图像添加到角度材料选项卡.请查看我的附图,了解我尝试实现的目标.
我的代码部分:
<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) 我有一个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) 我已经来过这里:
我知道已经有很多关于这个主题的问题,但没有一个能正确回答。我很好奇如何获取 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 代码。
我有这样的想法(不知道好坏)。我有实用程序,它通过 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) 我在每个网站上都有关于这个主题的内容,并且通过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
......等等......即使它们初始化时无关紧要,所以基本上总是如此.
我正在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
括号{
以获得以下结果:
如果有空格,字符串会在那里被分割(空格被删除),我会得到我想要的结果。但是,如果没有空格,我会拆分 上的字符串{
,因此{
会被删除,但这是我不想要的。如何Regex.Split()
在不删除分割条件字符的情况下使用?
我创建了一个Bitmap
并在其上绘制了一个简单的string
和Rectangle
。此外,我graphics
设置SmoothingMode
为AntiAlias
。
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
没有进行抗锯齿处理,我想知道为什么。这是一个错误还是我该如何修复它?
我希望我的域名不包含超过一个连续的(.)
或\'/\'
任何其他特殊字符。但它可以包含 IDN 字符,例如\xc3\x81, \xc5\x9b, etc..
. 我可以使用此正则表达式来满足所有要求(IDN 除外):
@"^(?:[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我说的是房产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)
现在我尝试为以下内容分配一个新int
值X
:
pd.DefaultPageSettings.PrinterResolution.X = 300;
Run Code Online (Sandbox Code Playgroud)
但检查后它的值pd.DefaultPageSettings.PrinterResolution.X
仍然包含200
.我只是想出了分配新的PrinterResolution
与设定值对象X
,并Y
以pd.DefaultPageSettings.PrinterResolution
该值更改为我的需求.
PrinterResolution changedRes = new PrinterResolution();
changedRes.X = 200;
changedRes.Y = 200;
pd.DefaultPageSettings.PrinterResolution = changedRes;
Run Code Online (Sandbox Code Playgroud)
那么为什么我不能设置属性的值呢?特别是为什么有记录,setter
即使它不是"可用的".
我有两节课,class A
和class 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
作为参数的someNumber
值foo
?
c# ×10
angular ×2
regex ×2
angular6 ×1
antialiasing ×1
cefsharp ×1
chromium ×1
datareader ×1
firefox ×1
graphics ×1
idn ×1
properties ×1
richtextbox ×1
split ×1
sql-server ×1
string ×1
tabs ×1
uielement ×1
url ×1
value-type ×1
web ×1
wpf ×1