我看到通过控制面板设置的分辨率和我的宽屏笔记本电脑的Screen.Bounds输出之间有一个有趣的区别.屏幕为15.5",通过控制面板设置的分辨率为1920x1080.但是当我运行这样的代码时.
Screen[] screens = Screen.AllScreens;
foreach (Screen scr in screens)
{
Console.WriteLine("Width: " + scr.Bounds.Width + ", Height: " + scr.Bounds.Width);
}
Run Code Online (Sandbox Code Playgroud)
输出显示我的分辨率为1536x864.我做了一些环顾四周,我认为它可能与DPI问题有关,当我查看我的显示设置时,滑块(我在Windows 8.1上)位于中间,复选框指出"让我为我的所有显示选择一个缩放级别"未选中.我运行这个小代码来获取当前的DPI设置.
float dpiX, dpiY;
Graphics graphics = new System.Windows.Forms.Form().CreateGraphics();
Console.WriteLine("DPI: " + graphics.DpiX);
Run Code Online (Sandbox Code Playgroud)
返回的DPI是96.0,根据我的理解,这是100%DPI设置(因此没有放大或其他任何调用).对我来说似乎很奇怪的是,Screen返回的界限恰好是我实际分辨率的80%,这会让我认为我的DPI设置为100(或125%),但事实并非如此.我的笔记本电脑屏幕只有这个问题,因为我的辅助显示器的界限等于通过控制面板的分辨率.这是因为我的DPI设置未设置为使显示器彼此独立(选中该复选框)?对于一些背景知识,我正在编写一个工具,它可以获取当前屏幕并从reddit获取图片并将它们彼此独立地放到屏幕上,所以无论我有什么解决方案,它都必须正确地获得每个显示器的分辨率.
我正在尝试使用 C# 创建一个小应用程序来发送电子邮件,但即使使用端口 587 (GMail) TLS 或 465 (GMail SSL) 我也无法让它工作。我不确定是什么导致了我的问题,我应该编辑我的 app.config 文件吗?这是我的代码:
try
{
SmtpClient client = new SmtpClient("smtp.gmail.com", 465);
client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("myemailid", "mypwd");
MailMessage msg = new MailMessage();
msg.To.Add(txtTo.Text);
msg.From = new MailAddress("myemailid");
msg.Subject = txtSub.Text;
msg.Body = txtMsg.Text;
client.Send(msg);
MessageBox.Show("sent");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Run Code Online (Sandbox Code Playgroud) int[] a = {5, 6, 10}
int n = a.Max() + a.Sum() % 10;
Console.Write(n);
Run Code Online (Sandbox Code Playgroud)
该代码输出11,但我会期望为1,因为31%10 =1。有人可以解释为什么上面的代码给出不同的答案吗?
现在我在我的SQL查询中使用临时表,但我想使用Partition By函数.
我的临时表查询如下:
drop table #Temp;
create table #Temp
(
NAME varchar(50),
EMPID varchar(50),
SS MONEY,
PP MONEY
);
insert into #Temp
select * From
(
select
p1.NAME,
p1.EMPID,
case when p1.AmtPayer = 'SELF' then sum(p1.Salary) else 0 end as S,
case when p1.AmtPayer = 'MANAGER' then sum(p1.Salary) else 0 end as P
from Candidate p1
group by p1.Name, p1.EMPID, p1.AmtPayer
) as P;
select
t.NAME,
t.EMPID,
sum(t.SS) as 'SELF PAID',
sum(t.PP) as 'PARTY PAID'
from #Temp t
group by …Run Code Online (Sandbox Code Playgroud) 我正在读第二本书但它仍然不明显.
我的问题是:编译IL语言的次数:a)每次从开始运行应用程序的执行.b)一次,在第一次执行后.
如果我有1到100位数,我应该得到输出
1--100
2--99
3--98
.
..
..
49---50
Run Code Online (Sandbox Code Playgroud)
代码低于其给定索引的范围,数组不需要很多维度
static void Main(string[] args)
{
//// A. 2D array of strings.
string[][] a = new string[100][];
int bound0 = a.GetUpperBound(0);
int bound1 = a.GetUpperBound(1);
for (int i = 0; i <= bound0; i++)
{
for (int x = 100; x <= bound1; x--)
{
string s1 = a[i][x];
Console.WriteLine(s1);
}
}
Console.WriteLine();
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud) 在尝试理解Seq.unfold时,我一直在玩下面的F#,它产生一系列三角形数字......
let tri_seq =
1.0
|> Seq.unfold (fun x -> Some (0.5 * x * (x + 1.0), x + 1.0))
|> Seq.map (fun n -> int n)
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,因为我可以做以下事情......
tri_seq |> Seq.nth 10
Run Code Online (Sandbox Code Playgroud)
......它显示了正确的数字,无论我传递给它的价值如何.
现在,我正在尝试打印序列中的第一个(比如说)十个值,而不是上面的代码只得到第n个.我试过以下......
tri_seq |> Seq.take 10 |> Seq.map (fun n -> printfn "%d" n)
Run Code Online (Sandbox Code Playgroud)
...但只打印前五个值.无论我使用什么来传递给Seq.take的值,我只得到最多五个结果,即使使用Seq.nth,我可以尽我所能.
有人能向我解释一下吗?为什么我不能超过第五个值?
c# ×4
.net ×1
compilation ×1
dpi ×1
f# ×1
il ×1
jit ×1
resolution ×1
smtp ×1
sql-server ×1
windows-8.1 ×1