0

このコードは、stackoverflowのどこかから入手しました。理解できません。YouTubeにログインするために使用されます。IamはC#とOOPSを初めて使用します。だから誰かが私にいくつかの泥棒を説明できますか?

1)3行目

 HttpWebRequest request = GetNewRequest("https://accounts.google.com/ServiceLoginAuth", cookies);

HttpWebRequestはクラスであり、requestはオブジェクトです。しかし、なぜその後Newキーワードが使用されないのでしょうか。そして、この「GetNewRequest」とは何ですか?それは方法ですか?ほとんどの場合、Newキーワードを使用してクラスのコンストラクターを使用します。それで、私はそこでクラスの任意のメソッドを使用できると結論付けることができますか?newキーワードとコンストラクターを使用する必要はありませんか?

2)6行目

Dictionary<string, string> parameters = new Dictionary<string, string>

辞書はクラスであり、パラメータはオブジェクトです。しかし、これは何<string, string>ですか?パラメータをクラスに渡すことができるのを見たことがありません。

3)7行目

{
        {"continue","https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26feature%3Dsign_in_button%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252F"},
        {"service","youtube"},{"uilel","3"},{"dsh","157212168103955870"},{"hl","en_US"},
        {"GALX","PTqcwpZb2aE"},{"pstMsg","1"},{"dnConn",""}, {"checkConnection","youtube%3A248%3A1"}, 
        {"checkedDomains","youtube"}, {"timeStmp",""}, {"secTok",""}, {"Email","username"}, {"Passwd","password"}, 
        {"signIn","Sign+in"}, {"PersistentCookie","yes"}, {"rmShown","1"}};

なにがわからないの?C#で読んだ構文には適合しません。それは私が今まで見たことがないものです。

完全なコード

public void Login()
{
    HttpWebRequest request = GetNewRequest("https://accounts.google.com/ServiceLoginAuth", cookies);
    request.Referer = "https://accounts.google.com/ServiceLogin?passive=true&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26feature%3Dsign_in_button%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252F&uilel=3&hl=en_US&service=youtube";
    request.Host = "accounts.google.com";
    Dictionary<string, string> parameters = new Dictionary<string, string>{
        {"continue","https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26feature%3Dsign_in_button%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252F"},
        {"service","youtube"},{"uilel","3"},{"dsh","157212168103955870"},{"hl","en_US"},
        {"GALX","PTqcwpZb2aE"},{"pstMsg","1"},{"dnConn",""}, {"checkConnection","youtube%3A248%3A1"}, 
        {"checkedDomains","youtube"}, {"timeStmp",""}, {"secTok",""}, {"Email","username"}, {"Passwd","password"}, 
        {"signIn","Sign+in"}, {"PersistentCookie","yes"}, {"rmShown","1"}};
    HttpWebResponse response = MakeRequest(request, cookies, parameters);
    response.Close();
}
4

2 に答える 2

5
  1. GetNewRequestのインスタンスを実際に作成して返すメソッドになりますHttpWebRequest。したがって、newを呼び出す前に必要ありませんGetNewRequestnew宣言と同じ行で型のコンストラクターを呼び出す場合にのみ必要です。
  2. 後の<string, string>宣言は、ジェネリック型Dictionaryであるため、キーと値の型を指定します。Dictionary<TKey, TValue>
  3. これは、キーと値のペアのリストを使用して辞書を初期化する方法です。単なる構文糖衣です。オブジェクトの初期化を参照してください。それはあなたの人生をより簡単にする/より簡潔にコード化するためだけにあります。そのコードは、より冗長なものと同等です。

_

Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("continue","https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26feature%3Dsign_in_button%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252F");
parameters.Add("service","youtube");
// etc.
于 2012-12-20T13:12:41.753 に答える
0
  1. GetNewRequest投稿したコードで定義されていないメソッドです。
  2. Dictionary<string, string>と記号はジェネリックスに使用されます。概要については、http://msdn.microsoft.com/en-us/library/ms379564%28v=vs.80%29.aspxを参照 <てください>
  3. 辞書の値を初期化するための構文です。http://msdn.microsoft.com/en-us/library/bb384062.aspxを参照してください。
于 2012-12-20T13:14:47.103 に答える